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

{
  bool bVar1;
  uint uVar2;
  mp_limb_t *pmVar3;
  undefined *puVar4;
  undefined *puVar5;
  mp_ptr pmVar6;
  int iVar7;
  uint uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  int iVar12;
  int iVar13;
  code *pcVar14;
  code *pcVar15;
  mp_ptr *ppmVar16;
  mp_ptr *ppmVar17;
  mp_ptr pmVar18;
  uint *puVar19;
  int **ppiVar20;
  uint *puVar21;
  int iVar22;
  mp_limb_t mVar23;
  mp_limb_t *pmVar24;
  int K;
  undefined4 *puVar25;
  uint uVar26;
  int *piVar27;
  mp_ptr pmVar28;
  mp_ptr pmVar29;
  uint uVar30;
  int iVar31;
  int *piVar32;
  int *piVar33;
  mp_ptr pmVar34;
  uint *puVar35;
  mp_limb_t __gmp_c;
  int iVar36;
  int iVar37;
  int iVar38;
  int **ppiVar39;
  uint *puVar40;
  int *piVar41;
  mp_ptr *ppmVar42;
  int iVar43;
  int iVar44;
  int *piVar45;
  code *local_90;
  mp_ptr *local_84;
  uint local_80;
  int local_7c;
  mp_size_t local_70;
  code *local_6c;
  undefined4 *local_5c;
  tmp_reentrant_t *__tmp_marker;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_0009d540;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  K = 1 << (k & 0x1fU);
  local_70 = l * 2;
  local_84 = Ap;
  if (k == 1) {
    pmVar29 = *Ap;
    if (B == (mp_ptr)0xffffffff) {
      iVar36 = -4;
    }
    else {
      piVar32 = (int *)*pmVar29;
      pmVar6 = B;
      ppiVar20 = fft_l;
      pmVar3 = pmVar29;
      if (B == (mp_ptr)0x0) {
        iVar36 = 0;
        *fft_l = piVar32;
      }
      else {
        do {
          *ppiVar20 = piVar32;
          pmVar6 = (mp_ptr)((int)pmVar6 + -1);
          piVar32 = (int *)pmVar3[1];
          ppiVar20 = ppiVar20 + 1;
          pmVar3 = pmVar3 + 1;
        } while (pmVar6 != (mp_ptr)0x0);
        iVar36 = (int)B * 4;
        fft_l[(int)B] = piVar32;
      }
    }
    iVar37 = (int)B + 1;
    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);
    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);
    puVar21 = *Ap;
    uVar26 = *(uint *)((int)puVar21 + iVar36);
    if (1 < uVar26) {
      uVar30 = *puVar21;
      uVar26 = uVar26 - 1;
      *puVar21 = uVar30 - uVar26;
      if (uVar30 < uVar26) {
        if (1 < (int)B) {
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_00042730;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 - 1;
            if (uVar26 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar40 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_00042730;
                uVar26 = *puVar40;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar40 = uVar26 - 1;
                puVar40 = puVar40 + 1;
              } while (uVar26 == 0);
            }
          }
          goto LAB_00044428;
        }
LAB_00042730:
        uVar26 = 0;
      }
      else {
LAB_00044428:
        uVar26 = 1;
      }
      *(uint *)((int)puVar21 + iVar36) = uVar26;
    }
    if (iVar7 != 0) {
      puVar21 = Ap[1];
      iVar7 = *(int *)((int)puVar21 + iVar36);
      uVar26 = *puVar21 - iVar7;
      *puVar21 = uVar26;
      if (uVar26 < (uint)-iVar7) {
        if (1 < (int)B) {
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_000427cc;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar40 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_000427cc;
                uVar26 = *puVar40;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar40 = uVar26 + 1;
                puVar40 = puVar40 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
          goto LAB_000444cc;
        }
LAB_000427cc:
        iVar7 = 1;
      }
      else {
LAB_000444cc:
        iVar7 = 0;
      }
      *(int *)((int)puVar21 + iVar36) = iVar7;
    }
    if (T != (mp_ptr)0x0) {
LAB_000427e4:
      iVar36 = 0x230;
      __tmp_marker = (tmp_reentrant_t *)0x0;
      local_6c = (code *)0x1;
      ppmVar16 = Ap;
      goto LAB_000427f4;
    }
    pmVar29 = *Bp;
    if (B != (mp_ptr)0xffffffff) {
      piVar32 = (int *)*pmVar29;
      ppiVar20 = fft_l;
      pmVar6 = B;
      pmVar3 = pmVar29;
      if (B != (mp_ptr)0x0) {
        do {
          *ppiVar20 = piVar32;
          pmVar6 = (mp_ptr)((int)pmVar6 + -1);
          piVar32 = (int *)pmVar3[1];
          ppiVar20 = ppiVar20 + 1;
          pmVar3 = pmVar3 + 1;
        } while (pmVar6 != (mp_ptr)0x0);
        ppiVar20 = (int **)((int)fft_l + iVar36);
      }
      *ppiVar20 = piVar32;
    }
    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);
    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);
    puVar21 = *Bp;
    uVar26 = *(uint *)((int)puVar21 + iVar36);
    if (1 < uVar26) {
      uVar30 = *puVar21;
      uVar26 = uVar26 - 1;
      *puVar21 = uVar30 - uVar26;
      if (uVar30 < uVar26) {
        if (1 < (int)B) {
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_0004461c;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 - 1;
            if (uVar26 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar40 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_0004461c;
                uVar26 = *puVar40;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar40 = uVar26 - 1;
                puVar40 = puVar40 + 1;
              } while (uVar26 == 0);
            }
          }
          goto LAB_000446dc;
        }
LAB_0004461c:
        uVar26 = 0;
      }
      else {
LAB_000446dc:
        uVar26 = 1;
      }
      *(uint *)((int)puVar21 + iVar36) = uVar26;
    }
    if (iVar7 != 0) {
      puVar21 = Bp[1];
      iVar7 = *(int *)((int)puVar21 + iVar36);
      uVar26 = *puVar21 - iVar7;
      *puVar21 = uVar26;
      if (uVar26 < (uint)-iVar7) {
        if (1 < (int)B) {
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_000446b8;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar40 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_000446b8;
                uVar26 = *puVar40;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar40 = uVar26 + 1;
                puVar40 = puVar40 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
          goto LAB_000446e4;
        }
LAB_000446b8:
        iVar7 = 1;
      }
      else {
LAB_000446e4:
        iVar7 = 0;
      }
      *(int *)((int)puVar21 + iVar36) = iVar7;
    }
  }
  else {
    puVar25 = (undefined4 *)(Mp + k * 4);
    iVar36 = K >> 1;
    iVar37 = l * 4;
    piVar32 = (int *)*puVar25;
    iVar7 = K >> 2;
    if (iVar36 == 2) {
      pmVar29 = *Ap;
      if (B == (mp_ptr)0xffffffff) {
        iVar22 = -4;
      }
      else {
        piVar33 = (int *)*pmVar29;
        pmVar6 = B;
        ppiVar20 = fft_l;
        pmVar3 = pmVar29;
        if (B == (mp_ptr)0x0) {
          iVar22 = 0;
          *fft_l = piVar33;
        }
        else {
          do {
            *ppiVar20 = piVar33;
            pmVar6 = (mp_ptr)((int)pmVar6 + -1);
            piVar33 = (int *)pmVar3[1];
            ppiVar20 = ppiVar20 + 1;
            pmVar3 = pmVar3 + 1;
          } while (pmVar6 != (mp_ptr)0x0);
          iVar22 = (int)B * 4;
          fft_l[(int)B] = piVar33;
        }
      }
      iVar12 = (int)B + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);
      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);
      puVar21 = *Ap;
      puVar40 = (uint *)((int)puVar21 + iVar22);
      if (1 < *puVar40) {
        uVar30 = *puVar21;
        uVar26 = *puVar40 - 1;
        *puVar21 = uVar30 - uVar26;
        if (uVar30 < uVar26) {
          if ((int)B < 2) {
LAB_0004355c:
            *puVar40 = 0;
            goto LAB_00043564;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_0004355c;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 - 1;
            if (uVar26 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_0004355c;
                uVar26 = *puVar21;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar21 = uVar26 - 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 == 0);
            }
          }
        }
        *puVar40 = 1;
      }
LAB_00043564:
      if (iVar38 != 0) {
        puVar21 = Ap[2];
        piVar33 = (int *)((int)puVar21 + iVar22);
        iVar38 = *piVar33;
        uVar26 = *puVar21 - iVar38;
        *puVar21 = uVar26;
        if (uVar26 < (uint)-iVar38) {
          if ((int)B < 2) {
LAB_000435f8:
            *piVar33 = 1;
            goto LAB_00043604;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_000435f8;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_000435f8;
                uVar26 = *puVar21;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar21 = uVar26 + 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
        }
        *piVar33 = 0;
      }
LAB_00043604:
      pmVar29 = Ap[1];
      if (B != (mp_ptr)0xffffffff) {
        piVar33 = (int *)*pmVar29;
        ppiVar20 = fft_l;
        pmVar6 = B;
        pmVar3 = pmVar29;
        if (B != (mp_ptr)0x0) {
          do {
            *ppiVar20 = piVar33;
            pmVar6 = (mp_ptr)((int)pmVar6 + -1);
            piVar33 = (int *)pmVar3[1];
            ppiVar20 = ppiVar20 + 1;
            pmVar3 = pmVar3 + 1;
          } while (pmVar6 != (mp_ptr)0x0);
          ppiVar20 = (int **)((int)fft_l + iVar22);
        }
        *ppiVar20 = piVar33;
      }
      ppiVar20 = (int **)((int)fft_l + iVar22);
      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);
      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);
      puVar21 = Ap[1];
      puVar40 = (uint *)((int)puVar21 + iVar22);
      if (1 < *puVar40) {
        uVar30 = *puVar21;
        uVar26 = *puVar40 - 1;
        *puVar21 = uVar30 - uVar26;
        if (uVar30 < uVar26) {
          if ((int)B < 2) {
LAB_00043714:
            *puVar40 = 0;
            goto LAB_0004371c;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_00043714;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 - 1;
            if (uVar26 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                bVar1 = B == pmVar29;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                if (bVar1) goto LAB_00043714;
                uVar26 = *puVar21;
                *puVar21 = uVar26 - 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 == 0);
            }
          }
        }
        *puVar40 = 1;
      }
LAB_0004371c:
      if (iVar38 != 0) {
        puVar21 = Ap[3];
        piVar33 = (int *)((int)puVar21 + iVar22);
        iVar38 = *piVar33;
        uVar26 = *puVar21 - iVar38;
        *puVar21 = uVar26;
        if (uVar26 < (uint)-iVar38) {
          if ((int)B < 2) {
LAB_000437ac:
            *piVar33 = 1;
            goto LAB_000437b8;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_000437ac;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                bVar1 = B == pmVar29;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                if (bVar1) goto LAB_000437ac;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
        }
        *piVar33 = 0;
      }
LAB_000437b8:
      iVar38 = 0;
      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
      ppmVar16 = Ap;
      do {
        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);
        puVar21 = ppmVar16[1];
        piVar33 = *ppiVar20;
        iVar43 = *(int *)((int)*ppmVar16 + iVar22);
        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
        iVar13 = iVar43 - ((int)piVar33 + iVar12);
        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;
        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;
        uVar30 = *puVar21;
        *puVar21 = uVar26 + uVar30;
        if (uVar26 + uVar30 < uVar26) {
          do {
            uVar26 = puVar21[1] + 1;
            puVar21[1] = uVar26;
            if (uVar26 != 0) goto LAB_000437d8;
            puVar21 = puVar21 + 2;
            uVar26 = *puVar21;
            *puVar21 = uVar26 + 1;
          } while (uVar26 + 1 == 0);
          puVar21 = *ppmVar16;
        }
        else {
LAB_000437d8:
          puVar21 = *ppmVar16;
        }
        piVar33 = *ppiVar20;
        iVar12 = *(int *)((int)puVar21 + iVar22);
        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
        iVar12 = (int)piVar33 + iVar13 + iVar12;
        uVar26 = iVar12 - 1;
        if (iVar12 == 0) {
          uVar26 = 0;
        }
        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;
        uVar30 = *puVar21;
        *puVar21 = uVar30 - uVar26;
        if (uVar30 < uVar26) {
          do {
            uVar26 = puVar21[1];
            puVar21[1] = uVar26 - 1;
            if (uVar26 != 0) break;
            puVar21 = puVar21 + 2;
            uVar26 = *puVar21;
            *puVar21 = uVar26 - 1;
          } while (uVar26 == 0);
        }
        iVar38 = iVar38 + 1;
        piVar32 = piVar32 + 2;
        ppmVar16 = ppmVar16 + 2;
      } while (iVar38 < iVar36);
      if (T != (mp_ptr)0x0) goto LAB_000427e4;
      piVar32 = (int *)*puVar25;
      if (iVar36 != 2) goto LAB_0004555c;
      pmVar29 = *Bp;
      if (B != (mp_ptr)0xffffffff) {
        piVar33 = (int *)*pmVar29;
        pmVar6 = B;
        ppiVar20 = fft_l;
        pmVar3 = pmVar29;
        if (B == (mp_ptr)0x0) {
          *fft_l = piVar33;
        }
        else {
          do {
            *ppiVar20 = piVar33;
            pmVar6 = (mp_ptr)((int)pmVar6 + -1);
            piVar33 = (int *)pmVar3[1];
            ppiVar20 = ppiVar20 + 1;
            pmVar3 = pmVar3 + 1;
          } while (pmVar6 != (mp_ptr)0x0);
          *(int **)((int)fft_l + iVar22) = piVar33;
        }
      }
      iVar37 = (int)B + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);
      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);
      puVar21 = *Bp;
      puVar40 = (uint *)((int)puVar21 + iVar22);
      if (1 < *puVar40) {
        uVar30 = *puVar21;
        uVar26 = *puVar40 - 1;
        *puVar21 = uVar30 - uVar26;
        if (uVar30 < uVar26) {
          if ((int)B < 2) {
LAB_00044098:
            *puVar40 = 0;
            goto LAB_000440a0;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_00044098;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 - 1;
            if (uVar26 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                if (B == pmVar29) goto LAB_00044098;
                uVar26 = *puVar21;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                *puVar21 = uVar26 - 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 == 0);
            }
          }
        }
        *puVar40 = 1;
      }
LAB_000440a0:
      if (iVar7 != 0) {
        puVar21 = Bp[2];
        piVar33 = (int *)((int)puVar21 + iVar22);
        iVar7 = *piVar33;
        uVar26 = *puVar21 - iVar7;
        *puVar21 = uVar26;
        if (uVar26 < (uint)-iVar7) {
          if ((int)B < 2) {
LAB_00044130:
            *piVar33 = 1;
            goto LAB_0004413c;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_00044130;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                bVar1 = B == pmVar29;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                if (bVar1) goto LAB_00044130;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
        }
        *piVar33 = 0;
      }
LAB_0004413c:
      pmVar29 = Bp[1];
      if (B != (mp_ptr)0xffffffff) {
        piVar33 = (int *)*pmVar29;
        ppiVar20 = fft_l;
        pmVar6 = B;
        pmVar3 = pmVar29;
        if (B != (mp_ptr)0x0) {
          do {
            *ppiVar20 = piVar33;
            pmVar6 = (mp_ptr)((int)pmVar6 + -1);
            piVar33 = (int *)pmVar3[1];
            ppiVar20 = ppiVar20 + 1;
            pmVar3 = pmVar3 + 1;
          } while (pmVar6 != (mp_ptr)0x0);
          ppiVar20 = (int **)((int)fft_l + iVar22);
        }
        *ppiVar20 = piVar33;
      }
      ppiVar20 = (int **)((int)fft_l + iVar22);
      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);
      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);
      puVar21 = Bp[1];
      uVar26 = *(uint *)((int)puVar21 + iVar22);
      uVar30 = uVar26 - 1;
      if (1 < uVar26) {
        uVar26 = *puVar21;
        *puVar21 = uVar26 - uVar30;
        if (uVar26 < uVar30) {
          if (1 < (int)B) {
            uVar26 = puVar21[1];
            puVar21[1] = uVar26 - 1;
            if (uVar26 == 0) {
              if (B == (mp_ptr)0x2) goto LAB_00044248;
              uVar26 = puVar21[2];
              puVar21[2] = uVar26 - 1;
              if (uVar26 == 0) {
                pmVar29 = (mp_ptr)0x3;
                puVar40 = puVar21 + 3;
                do {
                  bVar1 = B == pmVar29;
                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                  if (bVar1) goto LAB_00044248;
                  uVar26 = *puVar40;
                  *puVar40 = uVar26 - 1;
                  puVar40 = puVar40 + 1;
                } while (uVar26 == 0);
              }
            }
            goto LAB_00045a50;
          }
LAB_00044248:
          uVar26 = 0;
        }
        else {
LAB_00045a50:
          uVar26 = 1;
        }
        *(uint *)((int)puVar21 + iVar22) = uVar26;
      }
      if (iVar7 != 0) {
        puVar21 = Bp[3];
        piVar33 = (int *)((int)puVar21 + iVar22);
        iVar7 = *piVar33;
        uVar26 = *puVar21 - iVar7;
        *puVar21 = uVar26;
        if (uVar26 < (uint)-iVar7) {
          if ((int)B < 2) {
LAB_000442e0:
            *piVar33 = 1;
            goto LAB_000442ec;
          }
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (B == (mp_ptr)0x2) goto LAB_000442e0;
            uVar26 = puVar21[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              pmVar29 = (mp_ptr)0x3;
              puVar21 = puVar21 + 3;
              do {
                bVar1 = B == pmVar29;
                pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                if (bVar1) goto LAB_000442e0;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
                puVar21 = puVar21 + 1;
              } while (uVar26 + 1 == 0);
            }
          }
        }
        *piVar33 = 0;
      }
    }
    else {
      piVar33 = (int *)puVar25[-1];
      iVar38 = l * 8;
      iVar22 = K >> 3;
      if (iVar7 == 2) {
        pmVar29 = *Ap;
        if (B == (mp_ptr)0xffffffff) {
          iVar12 = -4;
        }
        else {
          piVar41 = (int *)*pmVar29;
          pmVar6 = B;
          ppiVar20 = fft_l;
          pmVar3 = pmVar29;
          if (B == (mp_ptr)0x0) {
            iVar12 = 0;
          }
          else {
            do {
              *ppiVar20 = piVar41;
              pmVar6 = (mp_ptr)((int)pmVar6 + -1);
              piVar41 = (int *)pmVar3[1];
              ppiVar20 = ppiVar20 + 1;
              pmVar3 = pmVar3 + 1;
            } while (pmVar6 != (mp_ptr)0x0);
            iVar12 = (int)B * 4;
            ppiVar20 = fft_l + (int)B;
          }
          *ppiVar20 = piVar41;
        }
        iVar43 = (int)B + 1;
        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);
        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);
        puVar21 = *Ap;
        uVar26 = *(uint *)((int)puVar21 + iVar12);
        if (1 < uVar26) {
          uVar30 = *puVar21;
          uVar26 = uVar26 - 1;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            if (1 < (int)B) {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 == 0) {
                if (B == (mp_ptr)0x2) goto LAB_000423fc;
                uVar26 = puVar21[2];
                puVar21[2] = uVar26 - 1;
                if (uVar26 == 0) {
                  pmVar29 = (mp_ptr)0x3;
                  puVar40 = puVar21 + 3;
                  do {
                    if (B == pmVar29) goto LAB_000423fc;
                    uVar26 = *puVar40;
                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                    *puVar40 = uVar26 - 1;
                    puVar40 = puVar40 + 1;
                  } while (uVar26 == 0);
                }
              }
              goto LAB_000459fc;
            }
LAB_000423fc:
            uVar26 = 0;
          }
          else {
LAB_000459fc:
            uVar26 = 1;
          }
          *(uint *)((int)puVar21 + iVar12) = uVar26;
        }
        if (iVar13 != 0) {
          puVar21 = Ap[4];
          iVar13 = *(int *)((int)puVar21 + iVar12);
          uVar26 = *puVar21 - iVar13;
          *puVar21 = uVar26;
          if (uVar26 < (uint)-iVar13) {
            if (1 < (int)B) {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 + 1;
              if (uVar26 + 1 == 0) {
                if (B == (mp_ptr)0x2) goto LAB_00042498;
                uVar26 = puVar21[2];
                puVar21[2] = uVar26 + 1;
                if (uVar26 + 1 == 0) {
                  pmVar29 = (mp_ptr)0x3;
                  puVar40 = puVar21 + 3;
                  do {
                    if (B == pmVar29) goto LAB_00042498;
                    uVar26 = *puVar40;
                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                    *puVar40 = uVar26 + 1;
                    puVar40 = puVar40 + 1;
                  } while (uVar26 + 1 == 0);
                }
              }
              goto LAB_00045a18;
            }
LAB_00042498:
            iVar13 = 1;
          }
          else {
LAB_00045a18:
            iVar13 = 0;
          }
          *(int *)((int)puVar21 + iVar12) = iVar13;
        }
        pmVar29 = Ap[2];
        if (B != (mp_ptr)0xffffffff) {
          piVar41 = (int *)*pmVar29;
          ppiVar20 = fft_l;
          pmVar6 = B;
          pmVar3 = pmVar29;
          if (B != (mp_ptr)0x0) {
            do {
              *ppiVar20 = piVar41;
              pmVar6 = (mp_ptr)((int)pmVar6 + -1);
              piVar41 = (int *)pmVar3[1];
              ppiVar20 = ppiVar20 + 1;
              pmVar3 = pmVar3 + 1;
            } while (pmVar6 != (mp_ptr)0x0);
            ppiVar20 = (int **)((int)fft_l + iVar12);
          }
          *ppiVar20 = piVar41;
        }
        ppiVar20 = (int **)((int)fft_l + iVar12);
        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);
        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);
        puVar21 = Ap[2];
        uVar26 = *(uint *)((int)puVar21 + iVar12);
        if (1 < uVar26) {
          uVar30 = *puVar21;
          uVar26 = uVar26 - 1;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            if (1 < (int)B) {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 == 0) {
                if (B == (mp_ptr)0x2) goto LAB_000425b4;
                uVar26 = puVar21[2];
                puVar21[2] = uVar26 - 1;
                if (uVar26 == 0) {
                  pmVar29 = (mp_ptr)0x3;
                  puVar40 = puVar21 + 3;
                  do {
                    bVar1 = B == pmVar29;
                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                    if (bVar1) goto LAB_000425b4;
                    uVar26 = *puVar40;
                    *puVar40 = uVar26 - 1;
                    puVar40 = puVar40 + 1;
                  } while (uVar26 == 0);
                }
              }
              goto LAB_000459f4;
            }
LAB_000425b4:
            uVar26 = 0;
          }
          else {
LAB_000459f4:
            uVar26 = 1;
          }
          *(uint *)((int)puVar21 + iVar12) = uVar26;
        }
        if (iVar13 != 0) {
          puVar21 = Ap[6];
          piVar41 = (int *)((int)puVar21 + iVar12);
          iVar13 = *piVar41;
          uVar26 = *puVar21 - iVar13;
          *puVar21 = uVar26;
          if (uVar26 < (uint)-iVar13) {
            if ((int)B < 2) {
LAB_0004264c:
              *piVar41 = 1;
              goto LAB_000448f4;
            }
            uVar26 = puVar21[1];
            puVar21[1] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              if (B == (mp_ptr)0x2) goto LAB_0004264c;
              uVar26 = puVar21[2];
              puVar21[2] = uVar26 + 1;
              if (uVar26 + 1 == 0) {
                pmVar29 = (mp_ptr)0x3;
                puVar21 = puVar21 + 3;
                do {
                  bVar1 = B == pmVar29;
                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                  if (bVar1) goto LAB_0004264c;
                  uVar26 = *puVar21;
                  *puVar21 = uVar26 + 1;
                  puVar21 = puVar21 + 1;
                } while (uVar26 + 1 == 0);
              }
            }
          }
          *piVar41 = 0;
        }
LAB_000448f4:
        iVar13 = 0;
        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
        ppmVar16 = Ap;
        do {
          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);
          puVar21 = ppmVar16[2];
          piVar41 = *ppiVar20;
          iVar44 = *(int *)((int)*ppmVar16 + iVar12);
          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
          iVar31 = iVar44 - ((int)piVar41 + iVar43);
          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;
          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar26 + uVar30;
          if (uVar26 + uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1] + 1;
              puVar21[1] = uVar26;
              if (uVar26 != 0) goto LAB_00044910;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 + 1;
            } while (uVar26 + 1 == 0);
            puVar21 = *ppmVar16;
          }
          else {
LAB_00044910:
            puVar21 = *ppmVar16;
          }
          piVar41 = *ppiVar20;
          iVar43 = *(int *)((int)puVar21 + iVar12);
          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
          iVar43 = (int)piVar41 + iVar31 + iVar43;
          uVar26 = iVar43 - 1;
          if (iVar43 == 0) {
            uVar26 = 0;
          }
          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 != 0) break;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 - 1;
            } while (uVar26 == 0);
          }
          iVar13 = iVar13 + 1;
          piVar33 = piVar33 + 2;
          ppmVar16 = ppmVar16 + 4;
        } while (iVar13 < iVar7);
        piVar33 = (int *)puVar25[-1];
        if (iVar7 != 2) {
          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
          goto LAB_00044f40;
        }
        pmVar29 = Ap[1];
        if (B != (mp_ptr)0xffffffff) {
          piVar41 = (int *)*pmVar29;
          pmVar6 = B;
          ppiVar20 = fft_l;
          pmVar3 = pmVar29;
          if (B == (mp_ptr)0x0) {
            *fft_l = piVar41;
          }
          else {
            do {
              *ppiVar20 = piVar41;
              pmVar6 = (mp_ptr)((int)pmVar6 + -1);
              piVar41 = (int *)pmVar3[1];
              ppiVar20 = ppiVar20 + 1;
              pmVar3 = pmVar3 + 1;
            } while (pmVar6 != (mp_ptr)0x0);
            *(int **)((int)fft_l + iVar12) = piVar41;
          }
        }
        iVar22 = (int)B + 1;
        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);
        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);
        puVar21 = Ap[1];
        uVar26 = *(uint *)((int)puVar21 + iVar12);
        if (1 < uVar26) {
          uVar30 = *puVar21;
          uVar26 = uVar26 - 1;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            if (1 < (int)B) {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 == 0) {
                if (B == (mp_ptr)0x2) goto LAB_00044bb8;
                uVar26 = puVar21[2];
                puVar21[2] = uVar26 - 1;
                if (uVar26 == 0) {
                  pmVar29 = (mp_ptr)0x3;
                  puVar40 = puVar21 + 3;
                  do {
                    if (B == pmVar29) goto LAB_00044bb8;
                    uVar26 = *puVar40;
                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                    *puVar40 = uVar26 - 1;
                    puVar40 = puVar40 + 1;
                  } while (uVar26 == 0);
                }
              }
              goto FUN_00044e0c;
            }
LAB_00044bb8:
            uVar26 = 0;
          }
          else {
FUN_00044e0c:
            uVar26 = 1;
          }
          *(uint *)((int)puVar21 + iVar12) = uVar26;
        }
        if (iVar38 != 0) {
          puVar21 = Ap[5];
          piVar41 = (int *)((int)puVar21 + iVar12);
          iVar38 = *piVar41;
          uVar26 = *puVar21 - iVar38;
          *puVar21 = uVar26;
          if (uVar26 < (uint)-iVar38) {
            if ((int)B < 2) {
LAB_00044c54:
              *piVar41 = 1;
              goto LAB_00044c60;
            }
            uVar26 = puVar21[1];
            puVar21[1] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              if (B == (mp_ptr)0x2) goto LAB_00044c54;
              uVar26 = puVar21[2];
              puVar21[2] = uVar26 + 1;
              if (uVar26 + 1 == 0) {
                pmVar29 = (mp_ptr)0x3;
                puVar21 = puVar21 + 3;
                do {
                  if (B == pmVar29) goto LAB_00044c54;
                  uVar26 = *puVar21;
                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                  *puVar21 = uVar26 + 1;
                  puVar21 = puVar21 + 1;
                } while (uVar26 + 1 == 0);
              }
            }
          }
          *piVar41 = 0;
        }
LAB_00044c60:
        pmVar29 = Ap[3];
        if (B != (mp_ptr)0xffffffff) {
          piVar41 = (int *)*pmVar29;
          ppiVar20 = fft_l;
          pmVar6 = B;
          pmVar3 = pmVar29;
          if (B != (mp_ptr)0x0) {
            do {
              *ppiVar20 = piVar41;
              pmVar6 = (mp_ptr)((int)pmVar6 + -1);
              piVar41 = (int *)pmVar3[1];
              ppiVar20 = ppiVar20 + 1;
              pmVar3 = pmVar3 + 1;
            } while (pmVar6 != (mp_ptr)0x0);
            ppiVar20 = (int **)((int)fft_l + iVar12);
          }
          *ppiVar20 = piVar41;
        }
        ppiVar20 = (int **)((int)fft_l + iVar12);
        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);
        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);
        puVar21 = Ap[3];
        uVar26 = *(uint *)((int)puVar21 + iVar12);
        uVar30 = uVar26 - 1;
        if (1 < uVar26) {
          uVar26 = *puVar21;
          *puVar21 = uVar26 - uVar30;
          if (uVar26 < uVar30) {
            if (1 < (int)B) {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 == 0) {
                if (B == (mp_ptr)0x2) goto LAB_00044d6c;
                uVar26 = puVar21[2];
                puVar21[2] = uVar26 - 1;
                if (uVar26 == 0) {
                  pmVar29 = (mp_ptr)0x3;
                  puVar40 = puVar21 + 3;
                  do {
                    bVar1 = B == pmVar29;
                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                    if (bVar1) goto LAB_00044d6c;
                    uVar26 = *puVar40;
                    *puVar40 = uVar26 - 1;
                    puVar40 = puVar40 + 1;
                  } while (uVar26 == 0);
                }
              }
              goto LAB_00045a04;
            }
LAB_00044d6c:
            uVar26 = 0;
          }
          else {
LAB_00045a04:
            uVar26 = 1;
          }
          *(uint *)((int)puVar21 + iVar12) = uVar26;
        }
        if (iVar22 != 0) {
          puVar21 = Ap[7];
          piVar41 = (int *)((int)puVar21 + iVar12);
          iVar22 = *piVar41;
          uVar26 = *puVar21 - iVar22;
          *puVar21 = uVar26;
          if (uVar26 < (uint)-iVar22) {
            if ((int)B < 2) {
LAB_00044e00:
              *piVar41 = 1;
              goto LAB_0004533c;
            }
            uVar26 = puVar21[1];
            puVar21[1] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              if (B == (mp_ptr)0x2) goto LAB_00044e00;
              uVar26 = puVar21[2];
              puVar21[2] = uVar26 + 1;
              if (uVar26 + 1 == 0) {
                pmVar29 = (mp_ptr)0x3;
                puVar21 = puVar21 + 3;
                do {
                  bVar1 = B == pmVar29;
                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);
                  if (bVar1) goto LAB_00044e00;
                  uVar26 = *puVar21;
                  *puVar21 = uVar26 + 1;
                  puVar21 = puVar21 + 1;
                } while (uVar26 + 1 == 0);
              }
            }
          }
          *piVar41 = 0;
        }
LAB_0004533c:
        ppmVar16 = Ap + 1;
        iVar22 = 0;
        do {
          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);
          puVar21 = ppmVar16[2];
          piVar41 = *ppiVar20;
          iVar43 = *(int *)((int)*ppmVar16 + iVar12);
          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
          iVar13 = iVar43 - ((int)piVar41 + iVar38);
          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;
          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar26 + uVar30;
          if (uVar26 + uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1] + 1;
              puVar21[1] = uVar26;
              if (uVar26 != 0) goto LAB_0004534c;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 + 1;
            } while (uVar26 + 1 == 0);
            puVar21 = *ppmVar16;
          }
          else {
LAB_0004534c:
            puVar21 = *ppmVar16;
          }
          piVar41 = *ppiVar20;
          iVar38 = *(int *)((int)puVar21 + iVar12);
          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
          iVar38 = (int)piVar41 + iVar13 + iVar38;
          uVar26 = iVar38 - 1;
          if (iVar38 == 0) {
            uVar26 = 0;
          }
          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 != 0) break;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 - 1;
            } while (uVar26 == 0);
          }
          iVar22 = iVar22 + 1;
          piVar33 = piVar33 + 2;
          ppmVar16 = ppmVar16 + 4;
        } while (iVar22 < iVar7);
      }
      else {
        ppiVar20 = (int **)(puVar25 + -3);
        piVar41 = (int *)puVar25[-2];
        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
        iVar12 = l << 4;
        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);
        ppmVar16 = Ap + 2;
        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);
        if (iVar22 < 1) {
          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);
          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);
        }
        else {
          piVar27 = piVar41 + iVar22 * 2;
          ppiVar39 = fft_l + (int)B;
          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
          ppmVar17 = Ap;
          do {
            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);
            puVar21 = ppmVar17[4];
            piVar45 = *ppiVar39;
            mVar23 = (*ppmVar17)[(int)B];
            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);
            iVar43 = mVar23 - ((int)piVar45 + iVar13);
            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;
            puVar21[(int)B] = iVar43 + uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar26 + uVar30;
            if (uVar26 + uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1] + 1;
                puVar21[1] = uVar26;
                if (uVar26 != 0) goto LAB_0004333c;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
              } while (uVar26 + 1 == 0);
              puVar21 = *ppmVar17;
            }
            else {
LAB_0004333c:
              puVar21 = *ppmVar17;
            }
            piVar45 = *ppiVar39;
            uVar26 = puVar21[(int)B];
            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
            iVar13 = (int)piVar45 + iVar13 + uVar26;
            uVar26 = iVar13 - 1;
            if (iVar13 == 0) {
              uVar26 = 0;
            }
            puVar21[(int)B] = iVar13 - uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar30 - uVar26;
            if (uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1];
                puVar21[1] = uVar26 - 1;
                if (uVar26 != 0) break;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 - 1;
              } while (uVar26 == 0);
            }
            piVar41 = piVar41 + 2;
            ppmVar17 = ppmVar17 + 8;
          } while (piVar41 != piVar27);
          piVar27 = (int *)puVar25[-2];
          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);
          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);
          piVar41 = piVar27 + iVar22 * 2;
          do {
            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);
            puVar21 = ppmVar16[4];
            piVar45 = *ppiVar39;
            mVar23 = (*ppmVar16)[(int)B];
            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
            iVar13 = mVar23 - ((int)piVar45 + iVar12);
            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;
            puVar21[(int)B] = iVar13 + uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar26 + uVar30;
            if (uVar26 + uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1] + 1;
                puVar21[1] = uVar26;
                if (uVar26 != 0) goto LAB_0004478c;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
              } while (uVar26 + 1 == 0);
              puVar21 = *ppmVar16;
            }
            else {
LAB_0004478c:
              puVar21 = *ppmVar16;
            }
            piVar45 = *ppiVar39;
            uVar26 = puVar21[(int)B];
            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
            iVar12 = (int)piVar45 + iVar12 + uVar26;
            uVar26 = iVar12 - 1;
            if (iVar12 == 0) {
              uVar26 = 0;
            }
            puVar21[(int)B] = iVar12 - uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar30 - uVar26;
            if (uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1];
                puVar21[1] = uVar26 - 1;
                if (uVar26 != 0) break;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 - 1;
              } while (uVar26 == 0);
            }
            piVar27 = piVar27 + 2;
            ppmVar16 = ppmVar16 + 8;
          } while (piVar27 != piVar41);
        }
        iVar12 = (int)B * 4;
        if (0 < iVar7) {
          ppiVar20 = fft_l + (int)B;
          goto LAB_000448f4;
        }
        piVar33 = (int *)puVar25[-1];
LAB_00044f40:
        local_5c = puVar25 + -3;
        ppmVar17 = Ap + 1;
        iVar12 = l << 4;
        piVar41 = (int *)puVar25[-2];
        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);
        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);
        ppmVar16 = Ap + 3;
        if (iVar22 < 1) {
          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);
          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);
        }
        else {
          piVar27 = piVar41 + iVar22 * 2;
          ppiVar20 = fft_l + (int)B;
          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
          do {
            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);
            puVar21 = ppmVar17[4];
            piVar45 = *ppiVar20;
            mVar23 = (*ppmVar17)[(int)B];
            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);
            iVar43 = mVar23 - ((int)piVar45 + iVar13);
            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;
            puVar21[(int)B] = iVar43 + uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar26 + uVar30;
            if (uVar26 + uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1] + 1;
                puVar21[1] = uVar26;
                if (uVar26 != 0) goto LAB_00044fe8;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
              } while (uVar26 + 1 == 0);
              puVar21 = *ppmVar17;
            }
            else {
LAB_00044fe8:
              puVar21 = *ppmVar17;
            }
            piVar45 = *ppiVar20;
            uVar26 = puVar21[(int)B];
            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
            iVar13 = (int)piVar45 + iVar13 + uVar26;
            uVar26 = iVar13 - 1;
            if (iVar13 == 0) {
              uVar26 = 0;
            }
            puVar21[(int)B] = iVar13 - uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar30 - uVar26;
            if (uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1];
                puVar21[1] = uVar26 - 1;
                if (uVar26 != 0) break;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 - 1;
              } while (uVar26 == 0);
            }
            piVar41 = piVar41 + 2;
            ppmVar17 = ppmVar17 + 8;
          } while (piVar27 != piVar41);
          piVar27 = (int *)puVar25[-2];
          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);
          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);
          piVar41 = piVar27 + iVar22 * 2;
          do {
            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);
            puVar21 = ppmVar16[4];
            piVar45 = *ppiVar20;
            mVar23 = (*ppmVar16)[(int)B];
            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
            iVar12 = mVar23 - ((int)piVar45 + iVar22);
            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;
            puVar21[(int)B] = iVar12 + uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar26 + uVar30;
            if (uVar26 + uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1] + 1;
                puVar21[1] = uVar26;
                if (uVar26 != 0) goto LAB_000451c8;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 + 1;
              } while (uVar26 + 1 == 0);
              puVar21 = *ppmVar16;
            }
            else {
LAB_000451c8:
              puVar21 = *ppmVar16;
            }
            piVar45 = *ppiVar20;
            uVar26 = puVar21[(int)B];
            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
            iVar22 = (int)piVar45 + iVar22 + uVar26;
            uVar26 = iVar22 - 1;
            if (iVar22 == 0) {
              uVar26 = 0;
            }
            puVar21[(int)B] = iVar22 - uVar26;
            uVar30 = *puVar21;
            *puVar21 = uVar30 - uVar26;
            if (uVar30 < uVar26) {
              do {
                uVar26 = puVar21[1];
                puVar21[1] = uVar26 - 1;
                if (uVar26 != 0) break;
                puVar21 = puVar21 + 2;
                uVar26 = *puVar21;
                *puVar21 = uVar26 - 1;
              } while (uVar26 == 0);
            }
            piVar27 = piVar27 + 2;
            ppmVar16 = ppmVar16 + 8;
          } while (piVar41 != piVar27);
        }
        if (0 < iVar7) {
          iVar12 = (int)B * 4;
          ppiVar20 = fft_l + (int)B;
          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
          goto LAB_0004533c;
        }
      }
      iVar22 = (int)B * 4;
      if (0 < iVar36) {
        ppiVar20 = fft_l + (int)B;
        goto LAB_000437b8;
      }
      if (T != (mp_ptr)0x0) goto LAB_000427e4;
      piVar32 = (int *)*puVar25;
LAB_0004555c:
      iVar22 = l << 3;
      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);
      ppiVar20 = (int **)(puVar25 + -2);
      piVar33 = (int *)puVar25[-1];
      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);
      ppmVar16 = Bp + 1;
      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);
      if (iVar7 < 1) {
        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);
        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);
      }
      else {
        piVar41 = piVar33 + iVar7 * 2;
        ppiVar39 = fft_l + (int)B;
        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);
        ppmVar17 = Bp;
        do {
          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);
          puVar21 = ppmVar17[2];
          piVar27 = *ppiVar39;
          mVar23 = (*ppmVar17)[(int)B];
          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);
          iVar12 = mVar23 - ((int)piVar27 + iVar38);
          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;
          puVar21[(int)B] = iVar12 + uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar26 + uVar30;
          if (uVar26 + uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1] + 1;
              puVar21[1] = uVar26;
              if (uVar26 != 0) goto LAB_00045614;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 + 1;
            } while (uVar26 + 1 == 0);
            puVar21 = *ppmVar17;
          }
          else {
LAB_00045614:
            puVar21 = *ppmVar17;
          }
          piVar27 = *ppiVar39;
          uVar26 = puVar21[(int)B];
          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
          iVar38 = (int)piVar27 + iVar38 + uVar26;
          uVar26 = iVar38 - 1;
          if (iVar38 == 0) {
            uVar26 = 0;
          }
          puVar21[(int)B] = iVar38 - uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 != 0) break;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 - 1;
            } while (uVar26 == 0);
          }
          piVar33 = piVar33 + 2;
          ppmVar17 = ppmVar17 + 4;
        } while (piVar33 != piVar41);
        piVar41 = (int *)puVar25[-1];
        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);
        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);
        piVar33 = piVar41 + iVar7 * 2;
        do {
          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);
          puVar21 = ppmVar16[2];
          piVar27 = *ppiVar39;
          mVar23 = (*ppmVar16)[(int)B];
          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
          iVar22 = mVar23 - ((int)piVar27 + iVar7);
          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;
          puVar21[(int)B] = iVar22 + uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar26 + uVar30;
          if (uVar26 + uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1] + 1;
              puVar21[1] = uVar26;
              if (uVar26 != 0) goto LAB_000457d8;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 + 1;
            } while (uVar26 + 1 == 0);
            puVar21 = *ppmVar16;
          }
          else {
LAB_000457d8:
            puVar21 = *ppmVar16;
          }
          piVar27 = *ppiVar39;
          uVar26 = puVar21[(int)B];
          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
          iVar7 = (int)piVar27 + iVar7 + uVar26;
          uVar26 = iVar7 - 1;
          if (iVar7 == 0) {
            uVar26 = 0;
          }
          puVar21[(int)B] = iVar7 - uVar26;
          uVar30 = *puVar21;
          *puVar21 = uVar30 - uVar26;
          if (uVar30 < uVar26) {
            do {
              uVar26 = puVar21[1];
              puVar21[1] = uVar26 - 1;
              if (uVar26 != 0) break;
              puVar21 = puVar21 + 2;
              uVar26 = *puVar21;
              *puVar21 = uVar26 - 1;
            } while (uVar26 == 0);
          }
          piVar41 = piVar41 + 2;
          ppmVar16 = ppmVar16 + 4;
        } while (piVar41 != piVar33);
      }
      if (iVar36 < 1) goto LAB_000446c4;
      iVar22 = (int)B * 4;
      ppiVar20 = fft_l + (int)B;
      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
    }
LAB_000442ec:
    iVar7 = 0;
    ppmVar16 = Bp;
    do {
      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);
      puVar21 = ppmVar16[1];
      piVar33 = *ppiVar20;
      iVar12 = *(int *)((int)*ppmVar16 + iVar22);
      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);
      iVar38 = iVar12 - ((int)piVar33 + iVar37);
      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;
      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;
      uVar30 = *puVar21;
      *puVar21 = uVar26 + uVar30;
      if (uVar26 + uVar30 < uVar26) {
        do {
          uVar26 = puVar21[1] + 1;
          puVar21[1] = uVar26;
          if (uVar26 != 0) goto LAB_000442f4;
          puVar21 = puVar21 + 2;
          uVar26 = *puVar21;
          *puVar21 = uVar26 + 1;
        } while (uVar26 + 1 == 0);
        puVar21 = *ppmVar16;
      }
      else {
LAB_000442f4:
        puVar21 = *ppmVar16;
      }
      piVar33 = *ppiVar20;
      iVar37 = *(int *)((int)puVar21 + iVar22);
      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);
      iVar37 = (int)piVar33 + iVar38 + iVar37;
      uVar26 = iVar37 - 1;
      if (iVar37 == 0) {
        uVar26 = 0;
      }
      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;
      uVar30 = *puVar21;
      *puVar21 = uVar30 - uVar26;
      if (uVar30 < uVar26) {
        do {
          uVar26 = puVar21[1];
          puVar21[1] = uVar26 - 1;
          if (uVar26 != 0) break;
          puVar21 = puVar21 + 2;
          uVar26 = *puVar21;
          *puVar21 = uVar26 - 1;
        } while (uVar26 == 0);
      }
      iVar7 = iVar7 + 1;
      piVar32 = piVar32 + 2;
      ppmVar16 = ppmVar16 + 2;
    } while (iVar7 < iVar36);
  }
LAB_000446c4:
  __tmp_marker = (tmp_reentrant_t *)0x0;
  if (Ap == Bp) goto LAB_00045c00;
  local_6c = (code *)0x0;
  iVar36 = 0x270;
  ppmVar16 = Bp;
LAB_000427f4:
  do {
    if ((int)B < iVar36) {
      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);
      puVar40 = puVar21 + (int)B;
      if (0 < K) {
        iVar36 = 0;
        do {
          pmVar6 = local_84[iVar36];
          pmVar29 = ppmVar16[iVar36];
          if (local_84 == ppmVar16) {
            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);
          }
          else {
            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);
          }
          pmVar28 = pmVar6 + (int)B;
          if (*pmVar28 == 0) {
            uVar26 = 0;
            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
            if (pmVar29[(int)B] != 0) {
LAB_00043d3c:
              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);
              uVar26 = uVar26 + iVar7 + *pmVar28;
              goto LAB_00043d68;
            }
          }
          else {
            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);
            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;
LAB_00043d68:
            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
            if (((((uVar26 != 0) &&
                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&
                 (1 < (int)B << 1)) &&
                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&
                 ((int)B << 1 != 2)))) &&
               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {
              puVar19 = puVar21 + 3;
              do {
                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
                if (puVar21 + (int)B * 2 == puVar19) break;
                uVar26 = *puVar19;
                *puVar19 = uVar26 + 1;
                puVar19 = puVar19 + 1;
                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
              } while (uVar26 + 1 == 0);
            }
          }
          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);
          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {
LAB_00043d00:
            mVar23 = 0;
          }
          else {
            mVar23 = 1;
            if (1 < (int)B) {
              mVar23 = pmVar6[1];
              pmVar6[1] = mVar23 + 1;
              if (mVar23 + 1 == 0) {
                mVar23 = 1;
                if (B == (uint *)0x2) goto LAB_00043ce4;
                mVar23 = pmVar6[2];
                pmVar6[2] = mVar23 + 1;
                if (mVar23 + 1 == 0) {
                  pmVar29 = pmVar6 + 3;
                  do {
                    if (pmVar28 == pmVar29) {
                      mVar23 = 1;
                      goto LAB_00043ce4;
                    }
                    mVar23 = *pmVar29;
                    *pmVar29 = mVar23 + 1;
                    pmVar29 = pmVar29 + 1;
                  } while (mVar23 + 1 == 0);
                }
              }
              goto LAB_00043d00;
            }
          }
LAB_00043ce4:
          *pmVar28 = mVar23;
          iVar36 = iVar36 + 1;
        } while (K != iVar36);
      }
    }
    else {
      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);
      iVar7 = 1 << (uVar26 & 0x1f);
      if ((iVar7 - 1U & (uint)B) != 0) {
        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)
                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,
                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);
        return mVar23;
      }
      iVar37 = iVar7;
      if (iVar7 < 0x20) {
        iVar37 = 0x20;
      }
      iVar22 = (int)B >> (uVar26 & 0x1f);
      if (iVar37 == 0) {
        trap(7);
      }
      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *
               iVar37;
      iVar38 = iVar37;
      if (iVar37 < 0) {
        iVar38 = iVar37 + 0x1f;
      }
      uVar30 = iVar38 >> 5;
      if (iVar36 <= (int)uVar30) {
        while( true ) {
          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);
          iVar36 = 1 << (uVar8 & 0x1f);
          if ((iVar36 - 1U & uVar30) == 0) break;
          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;
          iVar37 = uVar30 << 5;
        }
      }
      if ((int)B <= (int)uVar30) {
        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)
                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,
                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);
        return mVar23;
      }
      iVar36 = 4 << (uVar26 & 0x1f);
      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);
      iVar38 = uVar30 + 1;
      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);
      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);
      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);
      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;
      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                                 (&__tmp_marker,(uVar26 + 1) * 4);
      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))
      ;
      iVar37 = iVar37 >> (uVar26 & 0x1f);
      if ((int)uVar26 < 0) {
        *(undefined4 *)*piVar32 = 0;
      }
      else {
        uVar8 = 0;
        piVar33 = piVar32;
        do {
          uVar2 = uVar8 & 0x1f;
          *piVar33 = iVar12;
          uVar8 = uVar8 + 1;
          iVar12 = iVar12 + (4 << uVar2);
          piVar33 = piVar33 + 1;
        } while (uVar26 + 1 != uVar8);
        *(undefined4 *)*piVar32 = 0;
        if (0 < (int)uVar26) {
          iVar12 = 1;
          piVar33 = piVar32;
          do {
            piVar27 = (int *)*piVar33;
            piVar45 = piVar27 + iVar12;
            piVar41 = (int *)(piVar33[1] + iVar12 * 4);
            do {
              iVar13 = *piVar27;
              piVar27 = piVar27 + 1;
              piVar41[-iVar12] = iVar13 * 2;
              *piVar41 = iVar13 * 2 + 1;
              piVar41 = piVar41 + 1;
            } while (piVar45 != piVar27);
            piVar33 = piVar33 + 1;
            iVar12 = iVar12 << 1;
          } while (piVar32 + uVar26 != piVar33);
        }
      }
      if (0 < K) {
        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;
        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);
        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);
        iVar12 = 0;
        do {
          ppmVar17 = local_84 + iVar12;
          pmVar6 = *ppmVar17;
          pmVar28 = pmVar6 + (int)B;
          pmVar29 = pmVar6;
          if (*pmVar28 != 0) {
            do {
              mVar23 = *pmVar29;
              *pmVar29 = mVar23 - 1;
              pmVar29 = pmVar29 + 1;
            } while (mVar23 == 0);
            if (*pmVar28 == 0) {
              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);
              *pmVar28 = 1;
            }
            else {
              *pmVar28 = 0;
            }
          }
          if (local_84 == ppmVar16) {
            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);
          }
          else {
            pmVar28 = ppmVar16[iVar12];
            pmVar18 = pmVar28 + (int)B;
            pmVar29 = pmVar28;
            if (*pmVar18 != 0) {
              do {
                mVar23 = *pmVar29;
                *pmVar29 = mVar23 - 1;
                pmVar29 = pmVar29 + 1;
              } while (mVar23 == 0);
              if (*pmVar18 == 0) {
                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);
                *pmVar18 = 1;
              }
              else {
                *pmVar18 = 0;
              }
            }
            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);
            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);
          }
          iVar12 = iVar12 + 1;
          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,
                              uVar11,local_6c);
          (*ppmVar17)[(int)B] = mVar23;
        } while (K != iVar12);
      }
    }
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
    iVar36 = (int)B + 1;
    ppmVar17 = (mp_ptr *)fft_l + iVar36;
    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);
    puVar4 = PTR_LAB_0009d078;
    ppmVar42 = ppmVar17 + (int)B;
    *Bp = (mp_ptr)ppmVar17;
    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);
    ppmVar16 = ppmVar17;
    if (*ppmVar42 != (mp_ptr)0x0) {
      do {
        pmVar29 = *ppmVar16;
        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);
        ppmVar16 = ppmVar16 + 1;
      } while (pmVar29 == (mp_ptr)0x0);
      if (*ppmVar42 == (mp_ptr)0x0) {
        if (B != (uint *)0x0) {
          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);
        }
        *ppmVar42 = (mp_ptr)&DAT_00000001;
      }
      else {
        *ppmVar42 = (mp_ptr)0x0;
      }
    }
    if (1 < K) {
      ppmVar42 = local_84 + 1;
      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);
      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));
      ppmVar16 = Bp;
      do {
        ppmVar16 = ppmVar16 + 1;
        pmVar28 = ppmVar42[-1];
        *ppmVar16 = pmVar28;
        pmVar6 = pmVar28 + (int)B;
        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);
        pmVar29 = pmVar28;
        if (*pmVar6 != 0) {
          do {
            mVar23 = *pmVar29;
            *pmVar29 = mVar23 - 1;
            pmVar29 = pmVar29 + 1;
          } while (mVar23 == 0);
          if (*pmVar6 == 0) {
            if (B != (uint *)0x0) {
              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);
            }
            *pmVar6 = 1;
          }
          else {
            *pmVar6 = 0;
          }
        }
        ppmVar42 = ppmVar42 + 1;
        iVar7 = iVar7 + l;
        local_84 = (mp_ptr *)fft_l;
      } while (ppmVar17 != ppmVar42);
    }
    local_80 = K - 1;
    if (B != (uint *)0xffffffff) {
      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);
    }
    iVar22 = local_80 * nprime;
    iVar7 = pl * 2;
    puVar21 = (uint *)((int)B + iVar22);
    iVar37 = (int)puVar21 + 1;
    if (iVar37 == 0) {
      puVar40 = (uint *)0xffffffff;
    }
    else {
      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);
      puVar40 = puVar21;
    }
    if (-1 < (int)local_80) {
      local_7c = 0;
      local_70 = (iVar22 + 1) - (int)puVar40;
      pmVar28 = A + iVar22;
      pmVar6 = A + iVar36 + iVar22 + 1;
      pmVar29 = A + (int)puVar40;
      local_84 = (mp_ptr *)fft_l + (int)B;
      puVar40 = B;
      uVar26 = local_80;
      do {
        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)
                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);
        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {
          iVar22 = (int)puVar40 - (int)B;
          if (iVar22 < 2) {
LAB_00042fe4:
            local_7c = local_7c + 1;
          }
          else {
            mVar23 = *pmVar6;
            *pmVar6 = mVar23 + 1;
            if (mVar23 + 1 == 0) {
              if (iVar22 == 2) goto LAB_00042fe4;
              mVar23 = pmVar6[1];
              pmVar6[1] = mVar23 + 1;
              if (mVar23 + 1 == 0) {
                iVar38 = 3;
                pmVar18 = pmVar6 + 2;
                do {
                  if (iVar22 == iVar38) goto LAB_00042fe4;
                  mVar23 = *pmVar18;
                  iVar38 = iVar38 + 1;
                  *pmVar18 = mVar23 + 1;
                  pmVar18 = pmVar18 + 1;
                } while (mVar23 + 1 == 0);
              }
            }
          }
        }
        pmVar18 = Bp[K - uVar26 & local_80];
        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);
        puVar19 = pmVar18 + (int)B;
        iVar22 = iVar36;
        ppmVar16 = local_84;
        do {
          iVar22 = iVar22 + -1;
          if (iVar22 < 0) goto LAB_00043030;
          pmVar18 = (mp_ptr)*puVar19;
          pmVar34 = *ppmVar16;
          puVar19 = puVar19 + -1;
          ppmVar16 = ppmVar16 + -1;
        } while (pmVar18 == pmVar34);
        if (pmVar34 < pmVar18) {
          mVar23 = *pmVar28;
          *pmVar28 = mVar23 - 1;
          if (mVar23 == 0) {
            iVar22 = (int)puVar40 + 1;
            if (iVar22 < 2) {
LAB_00043990:
              local_7c = local_7c + -1;
            }
            else {
              mVar23 = pmVar28[1];
              pmVar28[1] = mVar23 - 1;
              if (mVar23 == 0) {
                if (iVar22 == 2) goto LAB_00043990;
                mVar23 = pmVar28[2];
                pmVar28[2] = mVar23 - 1;
                if (mVar23 == 0) {
                  iVar38 = 3;
                  pmVar18 = pmVar28 + 3;
                  do {
                    bVar1 = iVar22 == iVar38;
                    iVar38 = iVar38 + 1;
                    if (bVar1) goto LAB_00043990;
                    mVar23 = *pmVar18;
                    *pmVar18 = mVar23 - 1;
                    pmVar18 = pmVar18 + 1;
                  } while (mVar23 == 0);
                }
              }
            }
          }
          mVar23 = *pmVar29;
          *pmVar29 = mVar23 - 1;
          if (mVar23 == 0) {
            iVar22 = local_70 + (int)puVar40;
            if (iVar22 < 2) {
LAB_00043a18:
              local_7c = local_7c + -1;
            }
            else {
              mVar23 = pmVar29[1];
              pmVar29[1] = mVar23 - 1;
              if (mVar23 == 0) {
                if (iVar22 == 2) goto LAB_00043a18;
                mVar23 = pmVar29[2];
                pmVar29[2] = mVar23 - 1;
                if (mVar23 == 0) {
                  iVar38 = 3;
                  pmVar18 = pmVar29 + 3;
                  do {
                    if (iVar22 == iVar38) goto LAB_00043a18;
                    mVar23 = *pmVar18;
                    iVar38 = iVar38 + 1;
                    *pmVar18 = mVar23 - 1;
                    pmVar18 = pmVar18 + 1;
                  } while (mVar23 == 0);
                }
              }
            }
          }
        }
LAB_00043030:
        uVar26 = uVar26 - 1;
        pmVar28 = pmVar28 + -nprime;
        pmVar6 = pmVar6 + -nprime;
        puVar40 = (uint *)((int)puVar40 + nprime);
        pmVar29 = pmVar29 + -nprime;
      } while (uVar26 != 0xffffffff);
      if (local_7c == -1) {
        iVar36 = iVar37 - pl;
        pmVar29 = A + iVar36;
        mVar23 = *pmVar29;
        *pmVar29 = mVar23 + 1;
        if (mVar23 + 1 == 0) {
          if (pl < 2) {
            pmVar29 = A + iVar36 + -1;
            mVar23 = *pmVar29;
            *pmVar29 = mVar23 - 1;
            if ((mVar23 == 0) && (pl == 1)) {
              pmVar29[1] = pmVar29[1] - 1;
            }
LAB_00043f0c:
            A[(int)puVar21] = A[(int)puVar21] - 1;
          }
          else {
            mVar23 = pmVar29[1];
            pmVar29[1] = mVar23 + 1;
            if (mVar23 + 1 == 0) {
              if (pl == 2) {
LAB_00043ea4:
                pmVar29 = A + iVar36 + -1;
                mVar23 = *pmVar29;
                *pmVar29 = mVar23 - 1;
                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))
                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {
                  iVar36 = 3;
                  pmVar29 = pmVar29 + 3;
                  do {
                    bVar1 = pl < iVar36;
                    iVar36 = iVar36 + 1;
                    if (bVar1) break;
                    mVar23 = *pmVar29;
                    *pmVar29 = mVar23 - 1;
                    pmVar29 = pmVar29 + 1;
                  } while (mVar23 == 0);
                }
                goto LAB_00043f0c;
              }
              mVar23 = pmVar29[2];
              pmVar29[2] = mVar23 + 1;
              if (mVar23 + 1 == 0) {
                iVar22 = 3;
                pmVar29 = pmVar29 + 3;
                do {
                  if (pl == iVar22) goto LAB_00043ea4;
                  mVar23 = *pmVar29;
                  iVar22 = iVar22 + 1;
                  *pmVar29 = mVar23 + 1;
                  pmVar29 = pmVar29 + 1;
                } while (mVar23 + 1 == 0);
              }
            }
          }
        }
      }
      else if (local_7c == 1) {
        if (iVar37 < iVar7) {
          pmVar29 = A + (iVar37 - pl);
          mVar23 = *pmVar29;
          *pmVar29 = mVar23 - 1;
          if (((mVar23 == 0) && (1 < pl)) &&
             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&
              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {
            iVar36 = 3;
            pmVar29 = pmVar29 + 3;
            do {
              bVar1 = pl == iVar36;
              iVar36 = iVar36 + 1;
              if (bVar1) break;
              mVar23 = *pmVar29;
              *pmVar29 = mVar23 - 1;
              pmVar29 = pmVar29 + 1;
            } while (mVar23 == 0);
          }
        }
        else {
          pmVar29 = A + iVar37 + pl * -2;
          while( true ) {
            do {
              mVar23 = *pmVar29;
              do {
                *pmVar29 = mVar23 + 1;
                if (mVar23 + 1 != 0) goto LAB_00043068;
                mVar23 = 0;
              } while (iVar7 < 2);
              mVar23 = pmVar29[1];
              pmVar29[1] = mVar23 + 1;
              if (mVar23 + 1 != 0) goto LAB_00043068;
            } while (iVar7 == 2);
            mVar23 = pmVar29[2];
            pmVar29[2] = mVar23 + 1;
            if (mVar23 + 1 != 0) break;
            iVar36 = 3;
            pmVar6 = pmVar29 + 3;
            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {
              mVar23 = *pmVar6;
              *pmVar6 = mVar23 + 1;
              pmVar6 = pmVar6 + 1;
              if (mVar23 + 1 != 0) goto LAB_00043068;
            }
          }
        }
      }
    }
LAB_00043068:
    iVar36 = iVar37 + pl * -2;
    if (iVar36 < 1) {
      iVar36 = pl + iVar36;
      iVar7 = iVar7 - iVar37;
      if (pl != 0) {
        iVar37 = pl + -1;
        mVar23 = *A;
        pmVar29 = op;
        pmVar24 = op;
        pmVar3 = A;
        if (iVar37 != 0) {
          do {
            *pmVar24 = mVar23;
            iVar37 = iVar37 + -1;
            mVar23 = pmVar3[1];
            pmVar24 = pmVar24 + 1;
            pmVar3 = pmVar3 + 1;
          } while (iVar37 != 0);
          pmVar29 = op + pl + -1;
        }
        *pmVar29 = mVar23;
      }
      B = (mp_ptr)(iVar36 * 4);
      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);
      pmVar29 = op + iVar36;
      uVar30 = *pmVar29;
      *pmVar29 = uVar30 - uVar26;
      if (uVar30 < uVar26) {
        if (iVar7 < 2) goto LAB_00043184;
        mVar23 = pmVar29[1];
        pmVar29[1] = mVar23 - 1;
        if (mVar23 == 0) {
          if (iVar7 == 2) goto LAB_00043184;
          mVar23 = pmVar29[2];
          pmVar29[2] = mVar23 - 1;
          if (mVar23 != 0) goto LAB_00043a88;
          iVar36 = 3;
          pmVar29 = pmVar29 + 3;
          do {
            bVar1 = iVar7 == iVar36;
            iVar36 = iVar36 + 1;
            if (bVar1) goto LAB_00043184;
            mVar23 = *pmVar29;
            *pmVar29 = mVar23 - 1;
            fft_l = (int **)0x0;
            pmVar29 = pmVar29 + 1;
          } while (mVar23 == 0);
          goto LAB_00043210;
        }
      }
LAB_00043a88:
      fft_l = (int **)0x0;
    }
    else {
      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);
      puVar40 = A + iVar36;
      puVar21 = op + iVar36;
      iVar36 = pl - iVar36;
      uVar30 = *puVar40;
      *puVar21 = uVar26 + uVar30;
      if (uVar26 + uVar30 < uVar26) {
        if (iVar36 < 2) {
LAB_00043b4c:
          fft_l = (int **)&DAT_00000001;
        }
        else {
          uVar26 = puVar40[1];
          puVar21[1] = uVar26 + 1;
          if (uVar26 + 1 == 0) {
            if (iVar36 == 2) goto LAB_00043b4c;
            uVar26 = puVar40[2];
            puVar21[2] = uVar26 + 1;
            if (uVar26 + 1 == 0) {
              puVar35 = puVar40 + 3;
              iVar7 = 3;
              puVar19 = puVar21 + 3;
              do {
                if (iVar36 == iVar7) goto LAB_00043b4c;
                uVar26 = *puVar35;
                iVar7 = iVar7 + 1;
                puVar35 = puVar35 + 1;
                *puVar19 = uVar26 + 1;
                puVar19 = puVar19 + 1;
              } while (uVar26 + 1 == 0);
            }
            else {
              iVar7 = 3;
            }
          }
          else {
            iVar7 = 2;
          }
          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;
          puVar19 = puVar40 + iVar7;
          puVar21 = puVar21 + iVar7;
          do {
            uVar26 = *puVar19;
            puVar19 = puVar19 + 1;
            *puVar21 = uVar26;
            puVar21 = puVar21 + 1;
          } while (puVar40 + iVar36 != puVar19);
          fft_l = (int **)0x0;
        }
      }
      else {
        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {
          do {
            puVar21 = puVar21 + 1;
            uVar26 = *puVar19;
            puVar19 = puVar19 + 1;
            *puVar21 = uVar26;
          } while (puVar19 != puVar40 + iVar36);
        }
LAB_00044504:
        fft_l = (int **)0x0;
      }
      B = op + pl;
      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);
      uVar30 = *B;
      *B = uVar30 - uVar26;
      if ((uVar30 < uVar26) &&
         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {
LAB_00043184:
        mVar23 = *op;
        *op = mVar23 + 1;
        if (mVar23 + 1 == 0) {
          if (pl < 2) {
LAB_00043204:
            fft_l = (int **)&DAT_00000001;
            goto LAB_00043210;
          }
          mVar23 = op[1];
          op[1] = mVar23 + 1;
          if (mVar23 + 1 == 0) {
            if (pl == 2) goto LAB_00043204;
            mVar23 = op[2];
            op[2] = mVar23 + 1;
            if (mVar23 + 1 == 0) {
              iVar36 = 3;
              pmVar29 = op + 3;
              do {
                bVar1 = pl == iVar36;
                iVar36 = iVar36 + 1;
                if (bVar1) goto LAB_00043204;
                mVar23 = *pmVar29;
                *pmVar29 = mVar23 + 1;
                pmVar29 = pmVar29 + 1;
              } while (mVar23 + 1 == 0);
            }
          }
        }
        goto LAB_00043a88;
      }
    }
LAB_00043210:
    if (local_2c == *(int *)puVar5) {
      return (mp_limb_t)fft_l;
    }
    (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_00045c00:
    iVar36 = 0x230;
    local_6c = (code *)0x1;
    ppmVar16 = local_84;
  } while( true );
}



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

{
  bool bVar1;
  uint uVar2;
  undefined *puVar3;
  undefined *puVar4;
  uint *puVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uVar16;
  uint *puVar17;
  uint *puVar18;
  int *piVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int *piVar24;
  uint *puVar25;
  uint uVar26;
  uint uVar27;
  int *piVar28;
  int *piVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  int *piVar33;
  code *local_90;
  uint *local_84;
  uint local_80;
  int local_7c;
  int local_78;
  int local_70;
  code *local_6c;
  int *local_68;
  int *local_5c;
  int local_30;
  int local_2c;
  
  puVar4 = PTR___stack_chk_guard_0009d540;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  iVar23 = 1 << (param_3 & 0x1f);
  local_70 = param_9 * 2;
  iVar20 = iVar23 >> 2;
  local_84 = param_4;
  if (param_3 == 1) {
    puVar25 = (uint *)*param_4;
    if (param_7 == (uint *)0xffffffff) {
      iVar30 = -4;
    }
    else {
      uVar27 = *puVar25;
      puVar5 = param_7;
      puVar18 = param_11;
      puVar17 = puVar25;
      if (param_7 == (uint *)0x0) {
        iVar30 = 0;
        *param_11 = uVar27;
      }
      else {
        do {
          *puVar18 = uVar27;
          puVar5 = (uint *)((int)puVar5 + -1);
          uVar27 = puVar17[1];
          puVar18 = puVar18 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar5 != (uint *)0x0);
        iVar30 = (int)param_7 * 4;
        param_11[(int)param_7] = uVar27;
      }
    }
    iVar31 = (int)param_7 + 1;
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);
    puVar25 = (uint *)*param_4;
    uVar27 = *(uint *)((int)puVar25 + iVar30);
    if (1 < uVar27) {
      uVar26 = *puVar25;
      uVar27 = uVar27 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 - 1;
          if (uVar27 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00042730;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 - 1;
            if (uVar27 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_00042730;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 - 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 == 0);
            }
          }
          goto LAB_00044428;
        }
LAB_00042730:
        uVar27 = 0;
      }
      else {
LAB_00044428:
        uVar27 = 1;
      }
      *(uint *)((int)puVar25 + iVar30) = uVar27;
    }
    if (iVar6 != 0) {
      puVar25 = (uint *)param_4[1];
      iVar6 = *(int *)((int)puVar25 + iVar30);
      uVar27 = *puVar25 - iVar6;
      *puVar25 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_000427cc;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_000427cc;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
          goto LAB_000444cc;
        }
LAB_000427cc:
        iVar6 = 1;
      }
      else {
LAB_000444cc:
        iVar6 = 0;
      }
      *(int *)((int)puVar25 + iVar30) = iVar6;
    }
    if (param_12 != 0) goto LAB_000427e4;
    puVar25 = (uint *)*param_5;
    if (param_7 != (uint *)0xffffffff) {
      uVar27 = *puVar25;
      puVar5 = param_11;
      puVar18 = param_7;
      puVar17 = puVar25;
      if (param_7 != (uint *)0x0) {
        do {
          *puVar5 = uVar27;
          puVar18 = (uint *)((int)puVar18 + -1);
          uVar27 = puVar17[1];
          puVar5 = puVar5 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar18 != (uint *)0x0);
        puVar5 = (uint *)((int)param_11 + iVar30);
      }
      *puVar5 = uVar27;
    }
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);
    puVar25 = (uint *)*param_5;
    uVar27 = *(uint *)((int)puVar25 + iVar30);
    if (1 < uVar27) {
      uVar26 = *puVar25;
      uVar27 = uVar27 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 - 1;
          if (uVar27 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_0004461c;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 - 1;
            if (uVar27 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_0004461c;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 - 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 == 0);
            }
          }
          goto LAB_000446dc;
        }
LAB_0004461c:
        uVar27 = 0;
      }
      else {
LAB_000446dc:
        uVar27 = 1;
      }
      *(uint *)((int)puVar25 + iVar30) = uVar27;
    }
    if (iVar6 == 0) goto LAB_000446c4;
    puVar25 = (uint *)param_5[1];
    iVar6 = *(int *)((int)puVar25 + iVar30);
    uVar27 = *puVar25 - iVar6;
    *puVar25 = uVar27;
    if (uVar27 < (uint)-iVar6) {
      if ((int)param_7 < 2) {
LAB_000446b8:
        iVar6 = 1;
        goto LAB_000446bc;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_000446b8;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          puVar5 = (uint *)0x3;
          puVar17 = puVar25 + 3;
          do {
            if (param_7 == puVar5) goto LAB_000446b8;
            uVar27 = *puVar17;
            puVar5 = (uint *)((int)puVar5 + 1);
            *puVar17 = uVar27 + 1;
            puVar17 = puVar17 + 1;
          } while (uVar27 + 1 == 0);
        }
      }
    }
    iVar6 = 0;
LAB_000446bc:
    *(int *)((int)puVar25 + iVar30) = iVar6;
    goto LAB_000446c4;
  }
  local_68 = (int *)(param_10 + param_3 * 4);
  local_7c = iVar23 >> 1;
  local_78 = param_9 * 4;
  piVar33 = (int *)*local_68;
  if (local_7c == 2) {
    puVar25 = (uint *)*param_4;
    if (param_7 == (uint *)0xffffffff) {
      iVar30 = -4;
    }
    else {
      uVar27 = *puVar25;
      puVar5 = param_7;
      puVar18 = param_11;
      puVar17 = puVar25;
      if (param_7 == (uint *)0x0) {
        iVar30 = 0;
        *param_11 = uVar27;
      }
      else {
        do {
          *puVar18 = uVar27;
          puVar5 = (uint *)((int)puVar5 + -1);
          uVar27 = puVar17[1];
          puVar18 = puVar18 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar5 != (uint *)0x0);
        iVar30 = (int)param_7 * 4;
        param_11[(int)param_7] = uVar27;
      }
    }
    iVar31 = (int)param_7 + 1;
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);
    puVar25 = (uint *)*param_4;
    puVar17 = (uint *)((int)puVar25 + iVar30);
    if (1 < *puVar17) {
      uVar26 = *puVar25;
      uVar27 = *puVar17 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if ((int)param_7 < 2) {
LAB_0004355c:
          *puVar17 = 0;
          goto LAB_00043564;
        }
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_0004355c;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar5 = (uint *)0x3;
            puVar25 = puVar25 + 3;
            do {
              if (param_7 == puVar5) goto LAB_0004355c;
              uVar27 = *puVar25;
              puVar5 = (uint *)((int)puVar5 + 1);
              *puVar25 = uVar27 - 1;
              puVar25 = puVar25 + 1;
            } while (uVar27 == 0);
          }
        }
      }
      *puVar17 = 1;
    }
LAB_00043564:
    if (iVar6 != 0) {
      puVar25 = (uint *)param_4[2];
      piVar28 = (int *)((int)puVar25 + iVar30);
      iVar6 = *piVar28;
      uVar27 = *puVar25 - iVar6;
      *puVar25 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if ((int)param_7 < 2) {
LAB_000435f8:
          *piVar28 = 1;
          goto LAB_00043604;
        }
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_000435f8;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            puVar17 = (uint *)0x3;
            puVar25 = puVar25 + 3;
            do {
              if (param_7 == puVar17) goto LAB_000435f8;
              uVar27 = *puVar25;
              puVar17 = (uint *)((int)puVar17 + 1);
              *puVar25 = uVar27 + 1;
              puVar25 = puVar25 + 1;
            } while (uVar27 + 1 == 0);
          }
        }
      }
      *piVar28 = 0;
    }
LAB_00043604:
    puVar17 = (uint *)param_4[1];
    if (param_7 != (uint *)0xffffffff) {
      uVar27 = *puVar17;
      puVar5 = param_11;
      puVar18 = param_7;
      puVar25 = puVar17;
      if (param_7 != (uint *)0x0) {
        do {
          *puVar5 = uVar27;
          puVar18 = (uint *)((int)puVar18 + -1);
          uVar27 = puVar25[1];
          puVar5 = puVar5 + 1;
          puVar25 = puVar25 + 1;
        } while (puVar18 != (uint *)0x0);
        puVar5 = (uint *)((int)param_11 + iVar30);
      }
      *puVar5 = uVar27;
    }
    puVar25 = (uint *)((int)param_11 + iVar30);
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);
    puVar17 = (uint *)param_4[1];
    puVar5 = (uint *)((int)puVar17 + iVar30);
    if (1 < *puVar5) {
      uVar26 = *puVar17;
      uVar27 = *puVar5 - 1;
      *puVar17 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if ((int)param_7 < 2) {
LAB_00043714:
          *puVar5 = 0;
          goto LAB_0004371c;
        }
        uVar27 = puVar17[1];
        puVar17[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_00043714;
          uVar27 = puVar17[2];
          puVar17[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar18 = (uint *)0x3;
            puVar17 = puVar17 + 3;
            do {
              bVar1 = param_7 == puVar18;
              puVar18 = (uint *)((int)puVar18 + 1);
              if (bVar1) goto LAB_00043714;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
              puVar17 = puVar17 + 1;
            } while (uVar27 == 0);
          }
        }
      }
      *puVar5 = 1;
    }
LAB_0004371c:
    if (iVar6 != 0) {
      puVar17 = (uint *)param_4[3];
      piVar28 = (int *)((int)puVar17 + iVar30);
      iVar6 = *piVar28;
      uVar27 = *puVar17 - iVar6;
      *puVar17 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if ((int)param_7 < 2) {
LAB_000437ac:
          *piVar28 = 1;
          goto LAB_000437b8;
        }
        uVar27 = puVar17[1];
        puVar17[1] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_000437ac;
          uVar27 = puVar17[2];
          puVar17[2] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            puVar5 = (uint *)0x3;
            puVar17 = puVar17 + 3;
            do {
              bVar1 = param_7 == puVar5;
              puVar5 = (uint *)((int)puVar5 + 1);
              if (bVar1) goto LAB_000437ac;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
              puVar17 = puVar17 + 1;
            } while (uVar27 + 1 == 0);
          }
        }
      }
      *piVar28 = 0;
    }
  }
  else {
    piVar28 = (int *)local_68[-1];
    iVar6 = param_9 * 8;
    iVar30 = iVar23 >> 3;
    if (iVar20 == 2) {
      puVar25 = (uint *)*param_4;
      if (param_7 == (uint *)0xffffffff) {
        iVar31 = -4;
      }
      else {
        uVar27 = *puVar25;
        puVar5 = param_7;
        puVar18 = param_11;
        puVar17 = puVar25;
        if (param_7 == (uint *)0x0) {
          iVar31 = 0;
          puVar17 = param_11;
        }
        else {
          do {
            *puVar18 = uVar27;
            puVar5 = (uint *)((int)puVar5 + -1);
            uVar27 = puVar17[1];
            puVar18 = puVar18 + 1;
            puVar17 = puVar17 + 1;
          } while (puVar5 != (uint *)0x0);
          iVar31 = (int)param_7 * 4;
          puVar17 = param_11 + (int)param_7;
        }
        *puVar17 = uVar27;
      }
      iVar32 = (int)param_7 + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);
      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);
      puVar25 = (uint *)*param_4;
      uVar27 = *(uint *)((int)puVar25 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar25;
        uVar27 = uVar27 - 1;
        *puVar25 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_000423fc;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_000423fc;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 - 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_000459fc;
          }
LAB_000423fc:
          uVar27 = 0;
        }
        else {
LAB_000459fc:
          uVar27 = 1;
        }
        *(uint *)((int)puVar25 + iVar31) = uVar27;
      }
      if (iVar21 != 0) {
        puVar25 = (uint *)param_4[4];
        iVar21 = *(int *)((int)puVar25 + iVar31);
        uVar27 = *puVar25 - iVar21;
        *puVar25 = uVar27;
        if (uVar27 < (uint)-iVar21) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00042498;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 + 1;
              if (uVar27 + 1 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_00042498;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 + 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 + 1 == 0);
              }
            }
            goto LAB_00045a18;
          }
LAB_00042498:
          iVar21 = 1;
        }
        else {
LAB_00045a18:
          iVar21 = 0;
        }
        *(int *)((int)puVar25 + iVar31) = iVar21;
      }
      puVar17 = (uint *)param_4[2];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar17;
        puVar5 = param_11;
        puVar18 = param_7;
        puVar25 = puVar17;
        if (param_7 != (uint *)0x0) {
          do {
            *puVar5 = uVar27;
            puVar18 = (uint *)((int)puVar18 + -1);
            uVar27 = puVar25[1];
            puVar5 = puVar5 + 1;
            puVar25 = puVar25 + 1;
          } while (puVar18 != (uint *)0x0);
          puVar5 = (uint *)((int)param_11 + iVar31);
        }
        *puVar5 = uVar27;
      }
      puVar25 = (uint *)((int)param_11 + iVar31);
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);
      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);
      puVar17 = (uint *)param_4[2];
      uVar27 = *(uint *)((int)puVar17 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar17;
        uVar27 = uVar27 - 1;
        *puVar17 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar17[1];
            puVar17[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_000425b4;
              uVar27 = puVar17[2];
              puVar17[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar18 = (uint *)0x3;
                puVar5 = puVar17 + 3;
                do {
                  bVar1 = param_7 == puVar18;
                  puVar18 = (uint *)((int)puVar18 + 1);
                  if (bVar1) goto LAB_000425b4;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 - 1;
                  puVar5 = puVar5 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_000459f4;
          }
LAB_000425b4:
          uVar27 = 0;
        }
        else {
LAB_000459f4:
          uVar27 = 1;
        }
        *(uint *)((int)puVar17 + iVar31) = uVar27;
      }
      if (iVar21 != 0) {
        puVar17 = (uint *)param_4[6];
        piVar24 = (int *)((int)puVar17 + iVar31);
        iVar21 = *piVar24;
        uVar27 = *puVar17 - iVar21;
        *puVar17 = uVar27;
        if (uVar27 < (uint)-iVar21) {
          if ((int)param_7 < 2) {
LAB_0004264c:
            *piVar24 = 1;
            goto LAB_000448f4;
          }
          uVar27 = puVar17[1];
          puVar17[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_0004264c;
            uVar27 = puVar17[2];
            puVar17[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar17 + 3;
              do {
                bVar1 = param_7 == puVar5;
                puVar5 = (uint *)((int)puVar5 + 1);
                if (bVar1) goto LAB_0004264c;
                uVar27 = *puVar17;
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_000448f4:
      iVar21 = 0;
      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
      puVar17 = param_4;
      do {
        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);
        puVar5 = (uint *)puVar17[2];
        uVar27 = *puVar25;
        iVar12 = *(int *)(*puVar17 + iVar31);
        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
        iVar11 = iVar12 - (uVar27 + iVar32);
        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;
        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar27 + uVar26;
        if (uVar27 + uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1] + 1;
            puVar5[1] = uVar27;
            if (uVar27 != 0) goto LAB_00044910;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 + 1;
          } while (uVar27 + 1 == 0);
          puVar5 = (uint *)*puVar17;
        }
        else {
LAB_00044910:
          puVar5 = (uint *)*puVar17;
        }
        uVar27 = *puVar25;
        iVar32 = *(int *)((int)puVar5 + iVar31);
        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
        iVar11 = iVar32 + uVar27 + iVar11;
        uVar27 = iVar11 - 1;
        if (iVar11 == 0) {
          uVar27 = 0;
        }
        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1];
            puVar5[1] = uVar27 - 1;
            if (uVar27 != 0) break;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 - 1;
          } while (uVar27 == 0);
        }
        iVar21 = iVar21 + 1;
        piVar28 = piVar28 + 2;
        puVar17 = puVar17 + 4;
      } while (iVar21 < iVar20);
      piVar28 = (int *)local_68[-1];
      if (iVar20 != 2) {
        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
        goto LAB_00044f40;
      }
      puVar25 = (uint *)param_4[1];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar25;
        puVar5 = param_7;
        puVar18 = param_11;
        puVar17 = puVar25;
        if (param_7 == (uint *)0x0) {
          *param_11 = uVar27;
        }
        else {
          do {
            *puVar18 = uVar27;
            puVar5 = (uint *)((int)puVar5 + -1);
            uVar27 = puVar17[1];
            puVar18 = puVar18 + 1;
            puVar17 = puVar17 + 1;
          } while (puVar5 != (uint *)0x0);
          *(uint *)((int)param_11 + iVar31) = uVar27;
        }
      }
      iVar30 = (int)param_7 + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);
      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);
      puVar25 = (uint *)param_4[1];
      uVar27 = *(uint *)((int)puVar25 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar25;
        uVar27 = uVar27 - 1;
        *puVar25 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00044bb8;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_00044bb8;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 - 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_00044e0c;
          }
LAB_00044bb8:
          uVar27 = 0;
        }
        else {
LAB_00044e0c:
          uVar27 = 1;
        }
        *(uint *)((int)puVar25 + iVar31) = uVar27;
      }
      if (iVar6 != 0) {
        puVar25 = (uint *)param_4[5];
        piVar24 = (int *)((int)puVar25 + iVar31);
        iVar6 = *piVar24;
        uVar27 = *puVar25 - iVar6;
        *puVar25 = uVar27;
        if (uVar27 < (uint)-iVar6) {
          if ((int)param_7 < 2) {
LAB_00044c54:
            *piVar24 = 1;
            goto LAB_00044c60;
          }
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00044c54;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar17 = (uint *)0x3;
              puVar25 = puVar25 + 3;
              do {
                if (param_7 == puVar17) goto LAB_00044c54;
                uVar27 = *puVar25;
                puVar17 = (uint *)((int)puVar17 + 1);
                *puVar25 = uVar27 + 1;
                puVar25 = puVar25 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_00044c60:
      puVar17 = (uint *)param_4[3];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar17;
        puVar5 = param_11;
        puVar18 = param_7;
        puVar25 = puVar17;
        if (param_7 != (uint *)0x0) {
          do {
            *puVar5 = uVar27;
            puVar18 = (uint *)((int)puVar18 + -1);
            uVar27 = puVar25[1];
            puVar5 = puVar5 + 1;
            puVar25 = puVar25 + 1;
          } while (puVar18 != (uint *)0x0);
          puVar5 = (uint *)((int)param_11 + iVar31);
        }
        *puVar5 = uVar27;
      }
      puVar25 = (uint *)((int)param_11 + iVar31);
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);
      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);
      puVar17 = (uint *)param_4[3];
      uVar27 = *(uint *)((int)puVar17 + iVar31);
      uVar26 = uVar27 - 1;
      if (1 < uVar27) {
        uVar27 = *puVar17;
        *puVar17 = uVar27 - uVar26;
        if (uVar27 < uVar26) {
          if (1 < (int)param_7) {
            uVar27 = puVar17[1];
            puVar17[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00044d6c;
              uVar27 = puVar17[2];
              puVar17[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar18 = (uint *)0x3;
                puVar5 = puVar17 + 3;
                do {
                  bVar1 = param_7 == puVar18;
                  puVar18 = (uint *)((int)puVar18 + 1);
                  if (bVar1) goto LAB_00044d6c;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 - 1;
                  puVar5 = puVar5 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_00045a04;
          }
LAB_00044d6c:
          uVar27 = 0;
        }
        else {
LAB_00045a04:
          uVar27 = 1;
        }
        *(uint *)((int)puVar17 + iVar31) = uVar27;
      }
      if (iVar30 != 0) {
        puVar17 = (uint *)param_4[7];
        piVar24 = (int *)((int)puVar17 + iVar31);
        iVar30 = *piVar24;
        uVar27 = *puVar17 - iVar30;
        *puVar17 = uVar27;
        if (uVar27 < (uint)-iVar30) {
          if ((int)param_7 < 2) {
LAB_00044e00:
            *piVar24 = 1;
            goto LAB_0004533c;
          }
          uVar27 = puVar17[1];
          puVar17[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00044e00;
            uVar27 = puVar17[2];
            puVar17[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar17 + 3;
              do {
                bVar1 = param_7 == puVar5;
                puVar5 = (uint *)((int)puVar5 + 1);
                if (bVar1) goto LAB_00044e00;
                uVar27 = *puVar17;
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_0004533c:
      puVar17 = param_4 + 1;
      iVar30 = 0;
      do {
        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);
        puVar5 = (uint *)puVar17[2];
        uVar27 = *puVar25;
        iVar32 = *(int *)(*puVar17 + iVar31);
        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
        iVar21 = iVar32 - (uVar27 + iVar6);
        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;
        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar27 + uVar26;
        if (uVar27 + uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1] + 1;
            puVar5[1] = uVar27;
            if (uVar27 != 0) goto LAB_0004534c;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 + 1;
          } while (uVar27 + 1 == 0);
          puVar5 = (uint *)*puVar17;
        }
        else {
LAB_0004534c:
          puVar5 = (uint *)*puVar17;
        }
        uVar27 = *puVar25;
        iVar6 = *(int *)((int)puVar5 + iVar31);
        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
        iVar21 = iVar6 + uVar27 + iVar21;
        uVar27 = iVar21 - 1;
        if (iVar21 == 0) {
          uVar27 = 0;
        }
        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1];
            puVar5[1] = uVar27 - 1;
            if (uVar27 != 0) break;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 - 1;
          } while (uVar27 == 0);
        }
        iVar30 = iVar30 + 1;
        piVar28 = piVar28 + 2;
        puVar17 = puVar17 + 4;
      } while (iVar30 < iVar20);
    }
    else {
      piVar24 = local_68 + -3;
      piVar29 = (int *)local_68[-2];
      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
      iVar31 = param_9 << 4;
      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);
      puVar25 = param_4 + 2;
      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);
      if (iVar30 < 1) {
        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);
      }
      else {
        piVar19 = piVar29 + iVar30 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
        puVar17 = param_4;
        do {
          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);
          puVar18 = (uint *)puVar17[4];
          uVar27 = *puVar5;
          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar32 = iVar11 - (uVar27 + iVar21);
          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;
          puVar18[(int)param_7] = iVar32 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_0004333c;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_0004333c:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar21 = uVar27 + uVar26 + iVar21;
          uVar27 = iVar21 - 1;
          if (iVar21 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar21 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar17 = puVar17 + 8;
        } while (piVar29 != piVar19);
        piVar29 = (int *)local_68[-2];
        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);
        piVar24 = piVar29 + iVar30 * 2;
        do {
          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);
          puVar17 = (uint *)puVar25[4];
          uVar27 = *puVar5;
          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar21 = iVar32 - (uVar27 + iVar31);
          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
          puVar17[(int)param_7] = iVar21 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_0004478c;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_0004478c:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar31 = uVar27 + uVar26 + iVar31;
          uVar27 = iVar31 - 1;
          if (iVar31 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar31 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar25 = puVar25 + 8;
        } while (piVar29 != piVar24);
      }
      iVar31 = (int)param_7 * 4;
      if (0 < iVar20) {
        puVar25 = param_11 + (int)param_7;
        goto LAB_000448f4;
      }
      piVar28 = (int *)local_68[-1];
LAB_00044f40:
      local_5c = local_68 + -3;
      puVar17 = param_4 + 1;
      iVar31 = param_9 << 4;
      piVar24 = (int *)local_68[-2];
      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);
      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);
      puVar25 = param_4 + 3;
      if (iVar30 < 1) {
        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);
      }
      else {
        piVar29 = piVar24 + iVar30 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
        do {
          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);
          puVar18 = (uint *)puVar17[4];
          uVar27 = *puVar5;
          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar32 = iVar11 - (uVar27 + iVar21);
          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;
          puVar18[(int)param_7] = iVar32 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_00044fe8;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_00044fe8:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar21 = uVar27 + uVar26 + iVar21;
          uVar27 = iVar21 - 1;
          if (iVar21 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar21 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar17 = puVar17 + 8;
        } while (piVar29 != piVar24);
        piVar29 = (int *)local_68[-2];
        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);
        piVar24 = piVar29 + iVar30 * 2;
        do {
          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);
          puVar17 = (uint *)puVar25[4];
          uVar27 = *puVar5;
          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar31 = iVar21 - (uVar27 + iVar30);
          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;
          puVar17[(int)param_7] = iVar31 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_000451c8;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_000451c8:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar30 = uVar27 + uVar26 + iVar30;
          uVar27 = iVar30 - 1;
          if (iVar30 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar30 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar25 = puVar25 + 8;
        } while (piVar24 != piVar29);
      }
      if (0 < iVar20) {
        iVar31 = (int)param_7 * 4;
        puVar25 = param_11 + (int)param_7;
        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
        goto LAB_0004533c;
      }
    }
    iVar30 = (int)param_7 * 4;
    if (local_7c < 1) {
      if (param_12 == 0) {
        piVar33 = (int *)*local_68;
        goto LAB_0004555c;
      }
      goto LAB_000427e4;
    }
    puVar25 = param_11 + (int)param_7;
  }
LAB_000437b8:
  iVar6 = 0;
  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
  puVar17 = param_4;
  do {
    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);
    puVar5 = (uint *)puVar17[1];
    uVar27 = *puVar25;
    iVar32 = *(int *)(*puVar17 + iVar30);
    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
    iVar21 = iVar32 - (uVar27 + iVar31);
    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;
    uVar26 = *puVar5;
    *puVar5 = uVar27 + uVar26;
    if (uVar27 + uVar26 < uVar27) {
      do {
        uVar27 = puVar5[1] + 1;
        puVar5[1] = uVar27;
        if (uVar27 != 0) goto LAB_000437d8;
        puVar5 = puVar5 + 2;
        uVar27 = *puVar5;
        *puVar5 = uVar27 + 1;
      } while (uVar27 + 1 == 0);
      puVar5 = (uint *)*puVar17;
    }
    else {
LAB_000437d8:
      puVar5 = (uint *)*puVar17;
    }
    uVar27 = *puVar25;
    iVar31 = *(int *)((int)puVar5 + iVar30);
    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
    iVar21 = iVar31 + uVar27 + iVar21;
    uVar27 = iVar21 - 1;
    if (iVar21 == 0) {
      uVar27 = 0;
    }
    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;
    uVar26 = *puVar5;
    *puVar5 = uVar26 - uVar27;
    if (uVar26 < uVar27) {
      do {
        uVar27 = puVar5[1];
        puVar5[1] = uVar27 - 1;
        if (uVar27 != 0) break;
        puVar5 = puVar5 + 2;
        uVar27 = *puVar5;
        *puVar5 = uVar27 - 1;
      } while (uVar27 == 0);
    }
    iVar6 = iVar6 + 1;
    piVar33 = piVar33 + 2;
    puVar17 = puVar17 + 2;
  } while (iVar6 < local_7c);
  if (param_12 != 0) {
LAB_000427e4:
    iVar30 = 0x230;
    local_30 = 0;
    local_6c = (code *)0x1;
    goto LAB_000427f4;
  }
  piVar33 = (int *)*local_68;
  if (local_7c != 2) goto LAB_0004555c;
  puVar25 = (uint *)*param_5;
  if (param_7 != (uint *)0xffffffff) {
    uVar27 = *puVar25;
    puVar5 = param_7;
    puVar18 = param_11;
    puVar17 = puVar25;
    if (param_7 == (uint *)0x0) {
      *param_11 = uVar27;
    }
    else {
      do {
        *puVar18 = uVar27;
        puVar5 = (uint *)((int)puVar5 + -1);
        uVar27 = puVar17[1];
        puVar18 = puVar18 + 1;
        puVar17 = puVar17 + 1;
      } while (puVar5 != (uint *)0x0);
      *(uint *)((int)param_11 + iVar30) = uVar27;
    }
  }
  iVar31 = (int)param_7 + 1;
  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);
  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);
  puVar25 = (uint *)*param_5;
  puVar17 = (uint *)((int)puVar25 + iVar30);
  if (1 < *puVar17) {
    uVar26 = *puVar25;
    uVar27 = *puVar17 - 1;
    *puVar25 = uVar26 - uVar27;
    if (uVar26 < uVar27) {
      if ((int)param_7 < 2) {
LAB_00044098:
        *puVar17 = 0;
        goto LAB_000440a0;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 - 1;
      if (uVar27 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_00044098;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 - 1;
        if (uVar27 == 0) {
          puVar5 = (uint *)0x3;
          puVar25 = puVar25 + 3;
          do {
            if (param_7 == puVar5) goto LAB_00044098;
            uVar27 = *puVar25;
            puVar5 = (uint *)((int)puVar5 + 1);
            *puVar25 = uVar27 - 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 == 0);
        }
      }
    }
    *puVar17 = 1;
  }
LAB_000440a0:
  if (iVar6 != 0) {
    puVar25 = (uint *)param_5[2];
    piVar28 = (int *)((int)puVar25 + iVar30);
    iVar6 = *piVar28;
    uVar27 = *puVar25 - iVar6;
    *puVar25 = uVar27;
    if (uVar27 < (uint)-iVar6) {
      if ((int)param_7 < 2) {
LAB_00044130:
        *piVar28 = 1;
        goto LAB_0004413c;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_00044130;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          puVar17 = (uint *)0x3;
          puVar25 = puVar25 + 3;
          do {
            bVar1 = param_7 == puVar17;
            puVar17 = (uint *)((int)puVar17 + 1);
            if (bVar1) goto LAB_00044130;
            uVar27 = *puVar25;
            *puVar25 = uVar27 + 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 + 1 == 0);
        }
      }
    }
    *piVar28 = 0;
  }
LAB_0004413c:
  puVar25 = (uint *)param_5[1];
  if (param_7 != (uint *)0xffffffff) {
    uVar27 = *puVar25;
    puVar5 = param_11;
    puVar18 = param_7;
    puVar17 = puVar25;
    if (param_7 != (uint *)0x0) {
      do {
        *puVar5 = uVar27;
        puVar18 = (uint *)((int)puVar18 + -1);
        uVar27 = puVar17[1];
        puVar5 = puVar5 + 1;
        puVar17 = puVar17 + 1;
      } while (puVar18 != (uint *)0x0);
      puVar5 = (uint *)((int)param_11 + iVar30);
    }
    *puVar5 = uVar27;
  }
  puVar17 = (uint *)((int)param_11 + iVar30);
  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);
  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);
  puVar25 = (uint *)param_5[1];
  uVar27 = *(uint *)((int)puVar25 + iVar30);
  uVar26 = uVar27 - 1;
  if (1 < uVar27) {
    uVar27 = *puVar25;
    *puVar25 = uVar27 - uVar26;
    if (uVar27 < uVar26) {
      if (1 < (int)param_7) {
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_00044248;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar18 = (uint *)0x3;
            puVar5 = puVar25 + 3;
            do {
              bVar1 = param_7 == puVar18;
              puVar18 = (uint *)((int)puVar18 + 1);
              if (bVar1) goto LAB_00044248;
              uVar27 = *puVar5;
              *puVar5 = uVar27 - 1;
              puVar5 = puVar5 + 1;
            } while (uVar27 == 0);
          }
        }
        goto LAB_00045a50;
      }
LAB_00044248:
      uVar27 = 0;
    }
    else {
LAB_00045a50:
      uVar27 = 1;
    }
    *(uint *)((int)puVar25 + iVar30) = uVar27;
  }
  if (iVar6 == 0) goto LAB_000442ec;
  puVar25 = (uint *)param_5[3];
  piVar28 = (int *)((int)puVar25 + iVar30);
  iVar6 = *piVar28;
  uVar27 = *puVar25 - iVar6;
  *puVar25 = uVar27;
  if (uVar27 < (uint)-iVar6) {
    if ((int)param_7 < 2) {
LAB_000442e0:
      *piVar28 = 1;
      goto LAB_000442ec;
    }
    uVar27 = puVar25[1];
    puVar25[1] = uVar27 + 1;
    if (uVar27 + 1 == 0) {
      if (param_7 == (uint *)0x2) goto LAB_000442e0;
      uVar27 = puVar25[2];
      puVar25[2] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        puVar5 = (uint *)0x3;
        puVar25 = puVar25 + 3;
        do {
          bVar1 = param_7 == puVar5;
          puVar5 = (uint *)((int)puVar5 + 1);
          if (bVar1) goto LAB_000442e0;
          uVar27 = *puVar25;
          *puVar25 = uVar27 + 1;
          puVar25 = puVar25 + 1;
        } while (uVar27 + 1 == 0);
      }
    }
  }
  *piVar28 = 0;
LAB_000442ec:
  do {
    iVar6 = 0;
    puVar25 = param_5;
    do {
      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);
      puVar5 = (uint *)puVar25[1];
      uVar27 = *puVar17;
      iVar32 = *(int *)(*puVar25 + iVar30);
      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);
      iVar21 = iVar32 - (uVar27 + iVar31);
      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;
      uVar26 = *puVar5;
      *puVar5 = uVar27 + uVar26;
      if (uVar27 + uVar26 < uVar27) {
        do {
          uVar27 = puVar5[1] + 1;
          puVar5[1] = uVar27;
          if (uVar27 != 0) goto LAB_000442f4;
          puVar5 = puVar5 + 2;
          uVar27 = *puVar5;
          *puVar5 = uVar27 + 1;
        } while (uVar27 + 1 == 0);
        puVar5 = (uint *)*puVar25;
      }
      else {
LAB_000442f4:
        puVar5 = (uint *)*puVar25;
      }
      uVar27 = *puVar17;
      iVar31 = *(int *)((int)puVar5 + iVar30);
      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
      iVar21 = iVar31 + uVar27 + iVar21;
      uVar27 = iVar21 - 1;
      if (iVar21 == 0) {
        uVar27 = 0;
      }
      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;
      uVar26 = *puVar5;
      *puVar5 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        do {
          uVar27 = puVar5[1];
          puVar5[1] = uVar27 - 1;
          if (uVar27 != 0) break;
          puVar5 = puVar5 + 2;
          uVar27 = *puVar5;
          *puVar5 = uVar27 - 1;
        } while (uVar27 == 0);
      }
      iVar6 = iVar6 + 1;
      piVar33 = piVar33 + 2;
      puVar25 = puVar25 + 2;
    } while (iVar6 < local_7c);
LAB_000446c4:
    do {
      local_30 = 0;
      if (local_84 == param_5) goto LAB_00045c00;
      local_6c = (code *)0x0;
      iVar30 = 0x270;
      param_4 = param_5;
LAB_000427f4:
      if ((int)param_7 < iVar30) {
        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                                    (&local_30,(int)param_7 * 8);
        puVar17 = puVar25 + (int)param_7;
        if (0 < iVar23) {
          iVar30 = 0;
          do {
            piVar33 = (int *)local_84[iVar30];
            uVar27 = param_4[iVar30];
            if (local_84 == param_4) {
              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);
            }
            else {
              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);
            }
            piVar24 = piVar33 + (int)param_7;
            piVar28 = (int *)(uVar27 + (int)param_7 * 4);
            if (*piVar24 == 0) {
              uVar27 = 0;
              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
              if (*piVar28 != 0) {
LAB_00043d3c:
                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);
                uVar27 = uVar27 + iVar6 + *piVar24;
                goto LAB_00043d68;
              }
            }
            else {
              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);
              if (*piVar28 != 0) goto LAB_00043d3c;
LAB_00043d68:
              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
              if (((((uVar27 != 0) &&
                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&
                   (1 < (int)param_7 << 1)) &&
                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&
                   ((int)param_7 << 1 != 2)))) &&
                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {
                puVar5 = puVar25 + 3;
                do {
                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
                  if (puVar25 + (int)param_7 * 2 == puVar5) break;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 + 1;
                  puVar5 = puVar5 + 1;
                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
                } while (uVar27 + 1 == 0);
              }
            }
            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);
            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {
LAB_00043d00:
              iVar6 = 0;
            }
            else {
              iVar6 = 1;
              if (1 < (int)param_7) {
                iVar6 = piVar33[1];
                piVar33[1] = iVar6 + 1;
                if (iVar6 + 1 == 0) {
                  iVar6 = 1;
                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;
                  iVar6 = piVar33[2];
                  piVar33[2] = iVar6 + 1;
                  if (iVar6 + 1 == 0) {
                    piVar33 = piVar33 + 3;
                    do {
                      if (piVar24 == piVar33) {
                        iVar6 = 1;
                        goto LAB_00043ce4;
                      }
                      iVar6 = *piVar33;
                      *piVar33 = iVar6 + 1;
                      piVar33 = piVar33 + 1;
                    } while (iVar6 + 1 == 0);
                  }
                }
                goto LAB_00043d00;
              }
            }
LAB_00043ce4:
            *piVar24 = iVar6;
            iVar30 = iVar30 + 1;
          } while (iVar23 != iVar30);
        }
LAB_00042c64:
        iVar30 = (int)param_7 * 4;
        if (local_30 != 0) {
          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
        }
        iVar6 = (int)param_7 + 1;
        local_7c = iVar6 * 4;
        puVar17 = param_11 + iVar6;
        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);
        puVar3 = PTR_LAB_0009d078;
        puVar5 = puVar17 + (int)param_7;
        *param_5 = (uint)puVar17;
        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);
        puVar25 = puVar17;
        if (*puVar5 != 0) {
          do {
            uVar27 = *puVar25;
            *puVar25 = uVar27 - 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 == 0);
          if (*puVar5 == 0) {
            if (param_7 != (uint *)0x0) {
              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);
            }
            *puVar5 = 1;
          }
          else {
            *puVar5 = 0;
          }
        }
        if (1 < iVar23) {
          puVar5 = local_84 + 1;
          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);
          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));
          puVar25 = param_5;
          do {
            puVar25 = puVar25 + 1;
            piVar24 = (int *)puVar5[-1];
            *puVar25 = (uint)piVar24;
            piVar28 = piVar24 + (int)param_7;
            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);
            piVar33 = piVar24;
            if (*piVar28 != 0) {
              do {
                iVar21 = *piVar33;
                *piVar33 = iVar21 + -1;
                piVar33 = piVar33 + 1;
              } while (iVar21 == 0);
              if (*piVar28 == 0) {
                if (param_7 != (uint *)0x0) {
                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);
                }
                *piVar28 = 1;
              }
              else {
                *piVar28 = 0;
              }
            }
            puVar5 = puVar5 + 1;
            iVar31 = iVar31 + param_9;
            local_84 = param_11;
          } while (puVar17 != puVar5);
        }
        local_80 = iVar23 - 1;
        if (param_7 != (uint *)0xffffffff) {
          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);
        }
        iVar21 = local_80 * param_8;
        iVar31 = param_2 * 2;
        puVar25 = (uint *)((int)param_7 + iVar21);
        local_78 = (int)puVar25 + 1;
        if (local_78 == 0) {
          puVar17 = (uint *)0xffffffff;
        }
        else {
          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);
          puVar17 = puVar25;
        }
        if (-1 < (int)local_80) {
          local_7c = 0;
          local_70 = (iVar21 + 1) - (int)puVar17;
          piVar24 = param_6 + iVar21;
          piVar28 = param_6 + iVar6 + iVar21 + 1;
          piVar33 = param_6 + (int)puVar17;
          local_84 = param_11 + (int)param_7;
          puVar17 = param_7;
          uVar27 = local_80;
          do {
            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)
                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);
            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))
            {
              iVar21 = (int)puVar17 - (int)param_7;
              if (iVar21 < 2) {
LAB_00042fe4:
                local_7c = local_7c + 1;
              }
              else {
                iVar32 = *piVar28;
                *piVar28 = iVar32 + 1;
                if (iVar32 + 1 == 0) {
                  if (iVar21 == 2) goto LAB_00042fe4;
                  iVar32 = piVar28[1];
                  piVar28[1] = iVar32 + 1;
                  if (iVar32 + 1 == 0) {
                    iVar32 = 3;
                    piVar29 = piVar28 + 2;
                    do {
                      if (iVar21 == iVar32) goto LAB_00042fe4;
                      iVar11 = *piVar29;
                      iVar32 = iVar32 + 1;
                      *piVar29 = iVar11 + 1;
                      piVar29 = piVar29 + 1;
                    } while (iVar11 + 1 == 0);
                  }
                }
              }
            }
            uVar26 = param_5[iVar23 - uVar27 & local_80];
            param_11[param_8 * 2] = uVar27 + 1;
            puVar18 = (uint *)(uVar26 + iVar30);
            iVar21 = iVar6;
            puVar5 = local_84;
            do {
              iVar21 = iVar21 + -1;
              if (iVar21 < 0) goto LAB_00043030;
              uVar26 = *puVar18;
              uVar7 = *puVar5;
              puVar18 = puVar18 + -1;
              puVar5 = puVar5 + -1;
            } while (uVar26 == uVar7);
            if (uVar7 < uVar26) {
              iVar21 = *piVar24;
              *piVar24 = iVar21 + -1;
              if (iVar21 == 0) {
                iVar21 = (int)puVar17 + 1;
                if (iVar21 < 2) {
LAB_00043990:
                  local_7c = local_7c + -1;
                }
                else {
                  iVar32 = piVar24[1];
                  piVar24[1] = iVar32 + -1;
                  if (iVar32 == 0) {
                    if (iVar21 == 2) goto LAB_00043990;
                    iVar32 = piVar24[2];
                    piVar24[2] = iVar32 + -1;
                    if (iVar32 == 0) {
                      iVar32 = 3;
                      piVar29 = piVar24 + 3;
                      do {
                        bVar1 = iVar21 == iVar32;
                        iVar32 = iVar32 + 1;
                        if (bVar1) goto LAB_00043990;
                        iVar11 = *piVar29;
                        *piVar29 = iVar11 + -1;
                        piVar29 = piVar29 + 1;
                      } while (iVar11 == 0);
                    }
                  }
                }
              }
              iVar21 = *piVar33;
              *piVar33 = iVar21 + -1;
              if (iVar21 == 0) {
                iVar21 = local_70 + (int)puVar17;
                if (iVar21 < 2) {
LAB_00043a18:
                  local_7c = local_7c + -1;
                }
                else {
                  iVar32 = piVar33[1];
                  piVar33[1] = iVar32 + -1;
                  if (iVar32 == 0) {
                    if (iVar21 == 2) goto LAB_00043a18;
                    iVar32 = piVar33[2];
                    piVar33[2] = iVar32 + -1;
                    if (iVar32 == 0) {
                      iVar32 = 3;
                      piVar29 = piVar33 + 3;
                      do {
                        if (iVar21 == iVar32) goto LAB_00043a18;
                        iVar11 = *piVar29;
                        iVar32 = iVar32 + 1;
                        *piVar29 = iVar11 + -1;
                        piVar29 = piVar29 + 1;
                      } while (iVar11 == 0);
                    }
                  }
                }
              }
            }
LAB_00043030:
            uVar27 = uVar27 - 1;
            piVar24 = piVar24 + -param_8;
            piVar28 = piVar28 + -param_8;
            puVar17 = (uint *)((int)puVar17 + param_8);
            piVar33 = piVar33 + -param_8;
          } while (uVar27 != 0xffffffff);
          if (local_7c == -1) {
            iVar6 = local_78 - param_2;
            piVar33 = param_6 + iVar6;
            iVar30 = *piVar33;
            *piVar33 = iVar30 + 1;
            if (iVar30 + 1 == 0) {
              if (param_2 < 2) {
                piVar33 = param_6 + iVar6 + -1;
                iVar30 = *piVar33;
                *piVar33 = iVar30 + -1;
                if ((iVar30 == 0) && (param_2 == 1)) {
                  piVar33[1] = piVar33[1] + -1;
                }
LAB_00043f0c:
                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;
              }
              else {
                iVar30 = piVar33[1];
                piVar33[1] = iVar30 + 1;
                if (iVar30 + 1 == 0) {
                  if (param_2 == 2) {
LAB_00043ea4:
                    piVar33 = param_6 + iVar6 + -1;
                    iVar30 = *piVar33;
                    *piVar33 = iVar30 + -1;
                    if (((iVar30 == 0) &&
                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&
                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {
                      iVar30 = 3;
                      piVar33 = piVar33 + 3;
                      do {
                        bVar1 = param_2 < iVar30;
                        iVar30 = iVar30 + 1;
                        if (bVar1) break;
                        iVar6 = *piVar33;
                        *piVar33 = iVar6 + -1;
                        piVar33 = piVar33 + 1;
                      } while (iVar6 == 0);
                    }
                    goto LAB_00043f0c;
                  }
                  iVar30 = piVar33[2];
                  piVar33[2] = iVar30 + 1;
                  if (iVar30 + 1 == 0) {
                    iVar30 = 3;
                    piVar33 = piVar33 + 3;
                    do {
                      if (param_2 == iVar30) goto LAB_00043ea4;
                      iVar21 = *piVar33;
                      iVar30 = iVar30 + 1;
                      *piVar33 = iVar21 + 1;
                      piVar33 = piVar33 + 1;
                    } while (iVar21 + 1 == 0);
                  }
                }
              }
            }
          }
          else if (local_7c == 1) {
            if (local_78 < iVar31) {
              piVar33 = param_6 + (local_78 - param_2);
              iVar30 = *piVar33;
              *piVar33 = iVar30 + -1;
              if (((iVar30 == 0) && (1 < param_2)) &&
                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&
                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))
                 ) {
                iVar30 = 3;
                piVar33 = piVar33 + 3;
                do {
                  bVar1 = param_2 == iVar30;
                  iVar30 = iVar30 + 1;
                  if (bVar1) break;
                  iVar6 = *piVar33;
                  *piVar33 = iVar6 + -1;
                  piVar33 = piVar33 + 1;
                } while (iVar6 == 0);
              }
            }
            else {
              piVar33 = param_6 + local_78 + param_2 * -2;
              while( true ) {
                do {
                  iVar30 = *piVar33;
                  do {
                    *piVar33 = iVar30 + 1;
                    if (iVar30 + 1 != 0) goto LAB_00043068;
                    iVar30 = 0;
                  } while (iVar31 < 2);
                  iVar30 = piVar33[1];
                  piVar33[1] = iVar30 + 1;
                  if (iVar30 + 1 != 0) goto LAB_00043068;
                } while (iVar31 == 2);
                iVar30 = piVar33[2];
                piVar33[2] = iVar30 + 1;
                if (iVar30 + 1 != 0) break;
                iVar30 = 3;
                piVar28 = piVar33 + 3;
                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {
                  iVar6 = *piVar28;
                  *piVar28 = iVar6 + 1;
                  piVar28 = piVar28 + 1;
                  if (iVar6 + 1 != 0) goto LAB_00043068;
                }
              }
            }
          }
        }
LAB_00043068:
        iVar30 = local_78 + param_2 * -2;
        if (iVar30 < 1) {
          iVar30 = param_2 + iVar30;
          iVar31 = iVar31 - local_78;
          if (param_2 != 0) {
            iVar6 = param_2 + -1;
            iVar21 = *param_6;
            piVar28 = param_1;
            piVar33 = param_6;
            if (iVar6 != 0) {
              do {
                *piVar28 = iVar21;
                iVar6 = iVar6 + -1;
                iVar21 = piVar33[1];
                piVar28 = piVar28 + 1;
                piVar33 = piVar33 + 1;
              } while (iVar6 != 0);
              piVar28 = param_1 + param_2 + -1;
            }
            *piVar28 = iVar21;
          }
          param_7 = (uint *)(iVar30 * 4);
          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);
          puVar25 = (uint *)(param_1 + iVar30);
          uVar26 = *puVar25;
          *puVar25 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            if (iVar31 < 2) goto LAB_00043184;
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (iVar31 == 2) goto LAB_00043184;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 != 0) goto LAB_00043a88;
              iVar30 = 3;
              puVar25 = puVar25 + 3;
              do {
                bVar1 = iVar31 == iVar30;
                iVar30 = iVar30 + 1;
                if (bVar1) goto LAB_00043184;
                uVar27 = *puVar25;
                *puVar25 = uVar27 - 1;
                param_11 = (uint *)0x0;
                puVar25 = puVar25 + 1;
              } while (uVar27 == 0);
              goto LAB_00043210;
            }
          }
LAB_00043a88:
          param_11 = (uint *)0x0;
        }
        else {
          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)
                             (param_1,param_6,param_6 + param_2 * 2,iVar30);
          puVar17 = (uint *)(param_6 + iVar30);
          puVar25 = (uint *)(param_1 + iVar30);
          iVar30 = param_2 - iVar30;
          uVar26 = *puVar17;
          *puVar25 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            if (iVar30 < 2) {
LAB_00043b4c:
              param_11 = (uint *)0x1;
            }
            else {
              uVar27 = puVar17[1];
              puVar25[1] = uVar27 + 1;
              if (uVar27 + 1 == 0) {
                if (iVar30 == 2) goto LAB_00043b4c;
                uVar27 = puVar17[2];
                puVar25[2] = uVar27 + 1;
                if (uVar27 + 1 == 0) {
                  puVar18 = puVar17 + 3;
                  iVar6 = 3;
                  puVar5 = puVar25 + 3;
                  do {
                    if (iVar30 == iVar6) goto LAB_00043b4c;
                    uVar27 = *puVar18;
                    iVar6 = iVar6 + 1;
                    puVar18 = puVar18 + 1;
                    *puVar5 = uVar27 + 1;
                    puVar5 = puVar5 + 1;
                  } while (uVar27 + 1 == 0);
                }
                else {
                  iVar6 = 3;
                }
              }
              else {
                iVar6 = 2;
              }
              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;
              puVar5 = puVar17 + iVar6;
              puVar25 = puVar25 + iVar6;
              do {
                uVar27 = *puVar5;
                puVar5 = puVar5 + 1;
                *puVar25 = uVar27;
                puVar25 = puVar25 + 1;
              } while (puVar17 + iVar30 != puVar5);
              param_11 = (uint *)0x0;
            }
          }
          else {
            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {
              do {
                puVar25 = puVar25 + 1;
                uVar27 = *puVar5;
                puVar5 = puVar5 + 1;
                *puVar25 = uVar27;
              } while (puVar5 != puVar17 + iVar30);
            }
LAB_00044504:
            param_11 = (uint *)0x0;
          }
          param_7 = (uint *)(param_1 + param_2);
          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);
          uVar26 = *param_7;
          *param_7 = uVar26 - uVar27;
          if ((uVar26 < uVar27) &&
             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {
LAB_00043184:
            iVar30 = *param_1;
            *param_1 = iVar30 + 1;
            if (iVar30 + 1 == 0) {
              if (param_2 < 2) {
LAB_00043204:
                param_11 = (uint *)0x1;
                goto LAB_00043210;
              }
              iVar30 = param_1[1];
              param_1[1] = iVar30 + 1;
              if (iVar30 + 1 == 0) {
                if (param_2 == 2) goto LAB_00043204;
                iVar30 = param_1[2];
                param_1[2] = iVar30 + 1;
                if (iVar30 + 1 == 0) {
                  iVar30 = 3;
                  piVar33 = param_1 + 3;
                  do {
                    bVar1 = param_2 == iVar30;
                    iVar30 = iVar30 + 1;
                    if (bVar1) goto LAB_00043204;
                    iVar6 = *piVar33;
                    *piVar33 = iVar6 + 1;
                    piVar33 = piVar33 + 1;
                  } while (iVar6 + 1 == 0);
                }
              }
            }
            goto LAB_00043a88;
          }
        }
LAB_00043210:
        if (local_2c == *(int *)puVar4) {
          return param_11;
        }
        (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_00045c00:
        iVar30 = 0x230;
        local_6c = (code *)0x1;
        param_4 = local_84;
        goto LAB_000427f4;
      }
      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);
      iVar6 = 1 << (uVar27 & 0x1f);
      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);
      if (piVar33 == (int *)0x0) {
        iVar31 = iVar6;
        if (iVar6 < 0x20) {
          iVar31 = 0x20;
        }
        iVar21 = (int)param_7 >> (uVar27 & 0x1f);
        if (iVar31 == 0) {
          trap(7);
        }
        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31
                 ) * iVar31;
        iVar32 = iVar31;
        if (iVar31 < 0) {
          iVar32 = iVar31 + 0x1f;
        }
        uVar26 = iVar32 >> 5;
        if (iVar30 <= (int)uVar26) {
          while( true ) {
            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);
            iVar30 = 1 << (uVar7 & 0x1f);
            if ((iVar30 - 1U & uVar26) == 0) break;
            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;
            iVar31 = uVar26 << 5;
          }
        }
        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;
        iVar30 = 4 << (uVar27 & 0x1f);
        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);
        iVar32 = uVar26 + 1;
        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);
        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);
        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);
        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;
        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                                    (&local_30,(uVar27 + 1) * 4);
        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));
        iVar31 = iVar31 >> (uVar27 & 0x1f);
        if ((int)uVar27 < 0) {
          *(undefined4 *)*local_68 = 0;
        }
        else {
          uVar7 = 0;
          piVar33 = local_68;
          do {
            uVar2 = uVar7 & 0x1f;
            *piVar33 = iVar11;
            uVar7 = uVar7 + 1;
            iVar11 = iVar11 + (4 << uVar2);
            piVar33 = piVar33 + 1;
          } while (uVar27 + 1 != uVar7);
          *(undefined4 *)*local_68 = 0;
          if (0 < (int)uVar27) {
            iVar11 = 1;
            piVar33 = local_68;
            do {
              piVar24 = (int *)*piVar33;
              piVar29 = piVar24 + iVar11;
              piVar28 = (int *)(piVar33[1] + iVar11 * 4);
              do {
                iVar12 = *piVar24;
                piVar24 = piVar24 + 1;
                piVar28[-iVar11] = iVar12 * 2;
                *piVar28 = iVar12 * 2 + 1;
                piVar28 = piVar28 + 1;
              } while (piVar29 != piVar24);
              piVar33 = piVar33 + 1;
              iVar11 = iVar11 << 1;
            } while (local_68 + uVar27 != piVar33);
          }
        }
        iVar11 = (int)param_7 * 4;
        if (0 < iVar23) {
          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;
          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);
          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);
          iVar12 = 0;
          do {
            puVar25 = local_84 + iVar12;
            piVar28 = (int *)*puVar25;
            piVar24 = piVar28 + (int)param_7;
            piVar33 = piVar28;
            if (*piVar24 != 0) {
              do {
                iVar22 = *piVar33;
                *piVar33 = iVar22 + -1;
                piVar33 = piVar33 + 1;
              } while (iVar22 == 0);
              if (*piVar24 == 0) {
                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);
                *piVar24 = 1;
              }
              else {
                *piVar24 = 0;
              }
            }
            if (local_84 == param_4) {
              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);
            }
            else {
              piVar24 = (int *)param_4[iVar12];
              piVar29 = piVar24 + (int)param_7;
              piVar33 = piVar24;
              if (*piVar29 != 0) {
                do {
                  iVar22 = *piVar33;
                  *piVar33 = iVar22 + -1;
                  piVar33 = piVar33 + 1;
                } while (iVar22 == 0);
                if (*piVar29 == 0) {
                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);
                  *piVar29 = 1;
                }
                else {
                  *piVar29 = 0;
                }
              }
              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);
              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);
            }
            iVar12 = iVar12 + 1;
            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,
                                local_68,uVar10,local_6c);
            *(undefined4 *)(*puVar25 + iVar11) = uVar16;
          } while (iVar23 != iVar12);
        }
        goto LAB_00042c64;
      }
      (*(code *)PTR___gmp_assert_fail_0009d420)
                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);
LAB_00045524:
      (*(code *)PTR___gmp_assert_fail_0009d420)
                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);
LAB_0004555c:
      iVar30 = param_9 << 3;
      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);
      piVar28 = local_68 + -2;
      piVar24 = (int *)local_68[-1];
      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);
      puVar25 = param_5 + 1;
      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);
      if (iVar20 < 1) {
        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);
        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);
      }
      else {
        piVar29 = piVar24 + iVar20 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);
        puVar17 = param_5;
        do {
          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);
          puVar18 = (uint *)puVar17[2];
          uVar27 = *puVar5;
          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar31 = iVar21 - (uVar27 + iVar6);
          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;
          puVar18[(int)param_7] = iVar31 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_00045614;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_00045614:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar6 = uVar27 + uVar26 + iVar6;
          uVar27 = iVar6 - 1;
          if (iVar6 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar6 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar17 = puVar17 + 4;
        } while (piVar24 != piVar29);
        piVar24 = (int *)local_68[-1];
        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);
        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);
        piVar28 = piVar24 + iVar20 * 2;
        do {
          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);
          puVar17 = (uint *)puVar25[2];
          uVar27 = *puVar5;
          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar6 = iVar31 - (uVar27 + iVar30);
          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;
          puVar17[(int)param_7] = iVar6 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_000457d8;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_000457d8:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar30 = uVar27 + uVar26 + iVar30;
          uVar27 = iVar30 - 1;
          if (iVar30 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar30 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar25 = puVar25 + 4;
        } while (piVar24 != piVar28);
      }
    } while (local_7c < 1);
    iVar30 = (int)param_7 * 4;
    puVar17 = param_11 + (int)param_7;
    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
  } while( true );
}


lui gp,0x6
addiu gp,gp,0x2ed0
addu gp,gp,t9
addiu sp,sp,-0xc8
lw v1,-0x7b00(gp)
li v0,0x1
sw a0,0x7c(sp)
lw a0,0xd8(sp)
sw v1,0x84(sp)
sw gp,0x30(sp)
sw a0,0x40(sp)
lw a0,0xdc(sp)
lw v1,0x0(v1)
sw s1,0xa4(sp)
sw a0,0x78(sp)
sllv a0,v0,a2
sw s0,0xa0(sp)
sw a0,0x3c(sp)
lw a0,0xe8(sp)
lw s0,0xe0(sp)
lw s1,0xf0(sp)
sll a0,a0,0x1
sw ra,0xc4(sp)
sw s8,0xc0(sp)
sw a0,0x58(sp)
sw s7,0xbc(sp)
sw s6,0xb8(sp)
sw s5,0xb4(sp)
sw s4,0xb0(sp)
sw s3,0xac(sp)
sw s2,0xa8(sp)
sw a2,0xd0(sp)
sw a1,0xcc(sp)
sw a3,0x44(sp)
sw v1,0x9c(sp)
bne a2,v0,0x0004224c
_lw a0,0xec(sp)
li v0,-0x1
beq s0,v0,0x00042658
_lw a1,0x0(a3)
beq s0,zero,0x0004324c
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00042224
_lw a2,-0x4(a0)
sll s2,s0,0x2
addu v0,s1,s2
b 0x0004265c
_sw a2,0x0(v0)
sll v0,a2,0x2
lw v1,0x3c(sp)
lw a1,0xe8(sp)
addu a0,a0,v0
sra v1,v1,0x1
sll a1,a1,0x2
sw a0,0x60(sp)
li v0,0x2
sw v1,0x4c(sp)
sw a1,0x50(sp)
bne v1,v0,0x000422c4
_lw s3,0x0(a0)
li v0,-0x1
beq s0,v0,0x00043484
_lw a1,0x0(a3)
beq s0,zero,0x000454e4
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004229c
_lw a2,-0x4(a0)
sll s2,s0,0x2
addu v0,s1,s2
b 0x00043488
_sw a2,0x0(v0)
lw v1,0x3c(sp)
lw s6,-0x4(a0)
lw a0,0xe8(sp)
sra v1,v1,0x2
sll a0,a0,0x3
sw v1,0x48(sp)
bne v1,v0,0x0004325c
_sw a0,0x54(sp)
li v0,-0x1
beq s0,v0,0x00045a38
_lw a1,0x0(a3)
beq s0,zero,0x000459c4
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00042304
_lw a2,-0x4(a0)
sll s2,s0,0x2
addu v0,s1,s2
sw a2,0x0(v0)
lw s5,0x44(sp)
addiu s4,s0,0x1
lw t9,-0x7d0c(gp)
or a0,a1,zero
or a3,s4,zero
jalr t9
_lw a2,0x10(s5)
or a3,s4,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x10(s5)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x0(s5)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00042404
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x000459fc
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x000423fc
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000459fc
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x000423fc
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000459fc
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x000423f4
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x000459fc
_sw a2,-0x4(v1)
bne s0,a0,0x000423dc
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000424a4
_lw v1,0x44(sp)
lw v0,0x44(sp)
lw v0,0x10(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00045a18
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x00042498
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a18
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x00042498
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a18
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x00042490
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu v1,v1,0x1
bne v1,zero,0x00045a18
_sw v1,-0x4(v0)
bne s0,a0,0x00042478
_nop
li v0,0x1
sw v0,0x0(a1)
lw v1,0x44(sp)
li v0,-0x1
beq s0,v0,0x00045a40
_lw a1,0x8(v1)
beq s0,zero,0x00045a2c
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x000424c4
_lw a2,-0x4(a0)
addu s5,s1,s2
or v0,s5,zero
sw a2,0x0(v0)
lw s7,0x44(sp)
or a0,a1,zero
lw t9,-0x7d0c(gp)
or a3,s4,zero
jalr t9
_lw a2,0x18(s7)
or a3,s4,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x18(s7)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x8(s7)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x000425bc
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x000459f4
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x000425b4
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000459f4
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x000425b4
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000459f4
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x000425ac
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a2,a1,-0x1
bne a1,zero,0x000459f4
_sw a2,-0x4(v1)
bne s0,a0,0x00042598
_addiu a0,a0,0x1
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000448f4
_lw s8,-0x7fc8(gp)
lw v0,0x44(sp)
lw v0,0x18(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00045a20
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x0004264c
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a20
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x0004264c
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a20
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x00042644
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x00045a20
_sw v1,-0x4(v0)
bne s0,a0,0x00042630
_addiu a0,a0,0x1
li v0,0x1
b 0x000448f0
_sw v0,0x0(a1)
li s2,-0x4
lw s4,0x44(sp)
addiu s3,s0,0x1
lw t9,-0x7d0c(gp)
or a0,a1,zero
or a3,s3,zero
jalr t9
_lw a2,0x4(s4)
or a3,s3,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x4(s4)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x0(s4)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00042738
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00044428
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00042730
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044428
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00042730
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044428
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00042728
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x00044428
_sw a2,-0x4(v1)
bne s0,a0,0x00042710
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000427d8
_lw v0,0xf4(sp)
lw v0,0x44(sp)
lw v0,0x4(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x000444cc
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x000427cc
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x000444cc
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x000427cc
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x000444cc
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x000427c4
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu v1,v1,0x1
bne v1,zero,0x000444cc
_sw v1,-0x4(v0)
bne s0,a0,0x000427ac
_nop
li v0,0x1
sw v0,0x0(a1)
lw v0,0xf4(sp)
beq v0,zero,0x0004450c
_lw v1,0x40(sp)
li v0,0x1
lw s8,0x44(sp)
li s5,0x230
sw zero,0x98(sp)
sw v0,0x5c(sp)
slt v0,s0,s5
bne v0,zero,0x00043bac
_lw t9,-0x7d20(gp)
or a0,s0,zero
jalr t9
_lw a1,0x5c(sp)
or s6,v0,zero
lw gp,0x30(sp)
li v0,0x1
sllv v0,v0,s6
addiu s4,v0,-0x1
and s4,s4,s0
bne s4,zero,0x00045508
_sw v0,0x38(sp)
or a0,v0,zero
sll v0,s0,0x5
li v1,0x20
srav v0,v0,s6
slti s2,a0,0x20
sll v0,v0,0x1
movn a0,v1,s2
srav v1,s0,s6
addu v0,v0,s6
sw v1,0x54(sp)
addiu v0,v0,0x2
addu v0,v0,a0
teq a0,zero
div v0,a0
mflo v0
mul s2,v0,a0
bgez s2,0x00042878
_or s3,s2,zero
addiu s3,s2,0x1f
sra s3,s3,0x5
slt s5,s3,s5
bne s5,zero,0x000428d0
_slt v0,s3,s0
li s5,0x1
b 0x000428a8
_lw s7,0x5c(sp)
addu s3,s3,v0
subu v0,zero,v0
addiu s3,s3,-0x1
and s3,v0,s3
sll s2,s3,0x5
lw t9,-0x7d20(gp)
or a1,s7,zero
jalr t9
_or a0,s3,zero
sllv v0,s5,v0
addiu v1,v0,-0x1
and v1,v1,s3
bne v1,zero,0x00042894
_lw gp,0x30(sp)
slt v0,s3,s0
beq v0,zero,0x00045524
_li v1,0x4
lw t9,-0x7d50(gp)
addiu s5,sp,0x98
sllv v1,v1,s6
or a0,s5,zero
or a1,v1,zero
jalr t9
_sw v1,0x48(sp)
addiu s7,s3,0x1
lw gp,0x30(sp)
or a0,s5,zero
lw v1,0x48(sp)
sw v0,0x70(sp)
lw t9,-0x7d50(gp)
jalr t9
_or a1,v1,zero
sll a1,s7,0x1
lw gp,0x30(sp)
addiu a2,s6,0x1
sllv a1,a1,s6
sw v0,0x48(sp)
or a0,s5,zero
sw a2,0x4c(sp)
lw t9,-0x7d50(gp)
jalr t9
_sll a1,a1,0x2
sll a1,s7,0x3
lw gp,0x30(sp)
or a0,s5,zero
lw a2,0x4c(sp)
sw v0,0x64(sp)
sll v1,a2,0x2
sw a2,0x68(sp)
lw t9,-0x7d50(gp)
jalr t9
_sw v1,0x50(sp)
sllv v1,s7,s6
lw gp,0x30(sp)
or s7,v0,zero
lw v0,0x64(sp)
sll v1,v1,0x2
lw a1,0x50(sp)
or a0,s5,zero
lw t9,-0x7d50(gp)
addu v0,v0,v1
jalr t9
_sw v0,0x4c(sp)
li a1,0x8
lw gp,0x30(sp)
or a0,s5,zero
sllv a1,a1,s6
lw t9,-0x7d50(gp)
jalr t9
_sw v0,0x60(sp)
srav v1,s2,s6
lw gp,0x30(sp)
or t4,v1,zero
bltz s6,0x00045978
_lw a2,0x68(sp)
lw a0,0x60(sp)
or v1,zero,zero
li a3,0x4
sllv a1,a3,v1
sw v0,0x0(a0)
addiu v1,v1,0x1
addu v0,v0,a1
bne a2,v1,0x000429cc
_addiu a0,a0,0x4
lw v0,0x60(sp)
lw v0,0x0(v0)
blez s6,0x00042a54
_sw zero,0x0(v0)
lw v0,0x50(sp)
li t2,0x1
lw t1,0x60(sp)
addiu t3,v0,-0x4
addu t3,t3,t1
lw a0,0x0(t1)
sll v1,t2,0x2
lw v0,0x4(t1)
subu a3,zero,t2
addu t0,v1,a0
sll a3,a3,0x2
addu v1,v0,v1
lw v0,0x0(a0)
addu a2,v1,a3
addiu v1,v1,0x4
addiu a0,a0,0x4
sll v0,v0,0x1
addiu a1,v0,0x1
sw v0,0x0(a2)
bne t0,a0,0x00042a24
_sw a1,-0x4(v1)
addiu t1,t1,0x4
bne t3,t1,0x00042a08
_sll t2,t2,0x1
lw v0,0x3c(sp)
blez v0,0x00042c64
_sll s2,s0,0x2
lw v1,0x54(sp)
or s5,t4,zero
sw s6,0x6c(sp)
sw s1,0x8c(sp)
sllv v0,v1,s6
sw s0,0xe0(sp)
lw s6,0x70(sp)
or s1,v1,zero
addiu v0,v0,0x1
sw s8,0x70(sp)
lw s8,0x44(sp)
sw v0,0x50(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0x2170
sw v0,0x68(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0xd98
sw v0,0x54(sp)
sll a3,s4,0x2
addu s0,s8,a3
lw t1,0x0(s0)
addu t0,t1,s2
lw v0,0x0(t0)
beq v0,zero,0x00042b1c
_lw v0,0x70(sp)
or v0,t1,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00042ac8
_sw a0,-0x4(v0)
lw v0,0x0(t0)
bne v0,zero,0x00043a64
_lw t9,-0x7d58(gp)
or a1,zero,zero
sw t0,0x80(sp)
or a0,t1,zero
sw a3,0x74(sp)
jalr t9
_or a2,s2,zero
lw t0,0x80(sp)
or t1,v0,zero
lw a3,0x74(sp)
li v0,0x1
lw gp,0x30(sp)
sw v0,0x0(t0)
lw v0,0x70(sp)
beq s8,v0,0x00043a24
_addu t0,v0,a3
lw a0,0x0(t0)
addu a3,a0,s2
lw v0,0x0(a3)
beq v0,zero,0x00042b8c
_lw v0,0x50(sp)
or v0,a0,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a1,v1,-0x1
beq v1,zero,0x00042b3c
_sw a1,-0x4(v0)
lw v0,0x0(a3)
bne v0,zero,0x00043a6c
_lw t9,-0x7d58(gp)
or a1,zero,zero
sw a3,0x88(sp)
or a2,s2,zero
sw t1,0x80(sp)
jalr t9
_sw t0,0x74(sp)
li v0,0x1
lw a3,0x88(sp)
lw t0,0x74(sp)
lw t1,0x80(sp)
sw v0,0x0(a3)
lw v0,0x50(sp)
or a3,s3,zero
lw a2,0x38(sp)
or a1,s6,zero
lw a0,0x64(sp)
lw t9,0x54(sp)
sw t0,0x74(sp)
sw v0,0x14(sp)
sw t1,0x10(sp)
sw s7,0x20(sp)
sw s5,0x1c(sp)
jalr t9
_sw s1,0x18(sp)
or a3,s3,zero
lw t0,0x74(sp)
lw v1,0x50(sp)
lw a2,0x38(sp)
lw a1,0x48(sp)
lw v0,0x0(t0)
lw a0,0x4c(sp)
lw t9,0x54(sp)
sw s7,0x20(sp)
sw s5,0x1c(sp)
sw s1,0x18(sp)
sw v1,0x14(sp)
jalr t9
_sw v0,0x10(sp)
lw v0,0x5c(sp)
or a3,s6,zero
lw a0,0x0(s0)
addiu s4,s4,0x1
lw a2,0x6c(sp)
sw v0,0x2c(sp)
lw v0,0x60(sp)
lw a1,0xe0(sp)
lw t9,0x68(sp)
sw v0,0x24(sp)
lw v0,0x4c(sp)
sw s7,0x28(sp)
sw s5,0x20(sp)
sw v0,0x14(sp)
sw s1,0x1c(sp)
sw s3,0x18(sp)
lw v0,0x48(sp)
jalr t9
_sw v0,0x10(sp)
lw v1,0x0(s0)
lw gp,0x30(sp)
addu v1,v1,s2
sw v0,0x0(v1)
lw v0,0x3c(sp)
bne v0,s4,0x00042aac
_sll a3,s4,0x2
lw s0,0xe0(sp)
lw s1,0x8c(sp)
lw a0,0x98(sp)
bne a0,zero,0x000454c8
_lw t9,-0x7a28(gp)
lw t9,-0x7fc8(gp)
addiu s3,s0,0x1
lw s6,0x44(sp)
or a3,s0,zero
sll v0,s3,0x2
lw a2,0x58(sp)
lw a1,0x3c(sp)
addiu t9,t9,0x1a80
sw v0,0x4c(sp)
or a0,s6,zero
sw s1,0x10(sp)
bal 0x00041a80
_addu s4,s1,v0
sll t0,s0,0x6
lw gp,0x30(sp)
addu s5,s4,s2
lw v0,0x40(sp)
or a3,s0,zero
sw t0,0x48(sp)
or a0,s4,zero
lw s8,-0x7fc8(gp)
sw s4,0x0(v0)
lw v0,0xd0(sp)
addiu t9,s8,0x790
lw a1,0x0(s6)
subu a2,t0,v0
bal 0x00040790
_sw t9,0x38(sp)
lw v0,0x0(s5)
lw gp,0x30(sp)
beq v0,zero,0x00042d44
_lw t0,0x48(sp)
or v0,s4,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00042cf4
_sw a0,-0x4(v0)
lw v0,0x0(s5)
bne v0,zero,0x00044430
_nop
beq s0,zero,0x00042d40
_li v0,0x1
lw t9,-0x7d58(gp)
or a1,zero,zero
sw t0,0x48(sp)
or a2,s2,zero
jalr t9
_or a0,s4,zero
lw gp,0x30(sp)
lw t0,0x48(sp)
li v0,0x1
sw v0,0x0(s5)
lw v0,0x3c(sp)
slti v0,v0,0x2
bne v0,zero,0x00044eac
_lw v0,0x3c(sp)
li s5,0x4
lw v1,0xe8(sp)
lw a0,0xd0(sp)
addiu v0,v0,-0x1
sw s3,0x50(sp)
or s8,v1,zero
mul a1,v0,v1
sw v0,0x48(sp)
lw v0,0x40(sp)
sllv s5,s5,a0
addiu s6,v0,0x4
lw v0,0x44(sp)
sw s1,0x44(sp)
or s3,s6,zero
addu t2,a1,a0
addiu s7,v0,0x4
subu s4,t0,t2
addu v0,v0,s5
or s1,s4,zero
or s5,v0,zero
lw s6,-0x4(s7)
or a3,s0,zero
lw t9,0x38(sp)
or a2,s1,zero
sw s6,0x0(s3)
addu s4,s6,s2
lw a1,0x0(s7)
jalr t9
_or a0,s6,zero
lw v0,0x0(s4)
beq v0,zero,0x00042e20
_lw gp,0x30(sp)
or v0,s6,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00042dd8
_sw a0,-0x4(v0)
lw v0,0x0(s4)
bne v0,zero,0x00043a5c
_nop
beq s0,zero,0x00042e1c
_li v0,0x1
lw t9,-0x7d58(gp)
or a1,zero,zero
or a2,s2,zero
jalr t9
_or a0,s6,zero
lw gp,0x30(sp)
li v0,0x1
sw v0,0x0(s4)
addiu s7,s7,0x4
addiu s3,s3,0x4
bne s5,s7,0x00042da4
_addu s1,s1,s8
lw s1,0x44(sp)
lw s3,0x50(sp)
li v0,-0x1
beq s0,v0,0x00042e60
_lw v0,0x48(sp)
lw t9,-0x7d58(gp)
sll a2,s3,0x2
or a1,zero,zero
jalr t9
_or a0,s1,zero
lw gp,0x30(sp)
lw v0,0x48(sp)
lw v1,0xe4(sp)
mul s8,v0,v1
lw v0,0xcc(sp)
sll v0,v0,0x1
sw v0,0x54(sp)
addu v0,s0,s8
sw v0,0x5c(sp)
addiu v0,v0,0x1
beq v0,zero,0x00043a74
_sw v0,0x50(sp)
lw t9,-0x7d58(gp)
sll a2,v0,0x2
lw a0,0x78(sp)
jalr t9
_or a1,zero,zero
lw v0,0x48(sp)
bltz v0,0x00043064
_lw gp,0x30(sp)
lw v1,0x5c(sp)
lw v0,0xe4(sp)
sll t0,s8,0x2
sll t4,v1,0x2
lw s6,0x48(sp)
addiu t2,t0,0x4
sw s0,0xe0(sp)
sll s5,v0,0x3
subu t3,zero,v0
lw v0,0x4c(sp)
addu a0,s1,s5
sw zero,0x4c(sp)
sll t3,t3,0x2
addu t2,t2,v0
sw a0,0x38(sp)
addiu v0,s8,0x1
lw a0,0x78(sp)
or s8,s6,zero
subu v0,v0,v1
addu s4,a0,t0
addu s5,a0,t2
sw v0,0x58(sp)
addu s7,a0,t4
addu a0,s1,s2
or v0,s0,zero
or s1,s5,zero
sw a0,0x44(sp)
or s5,s2,zero
or s0,s7,zero
or s2,s4,zero
or s6,v0,zero
or s4,s3,zero
or s3,t3,zero
lw v0,0x3c(sp)
or a3,s4,zero
lw t9,-0x7d0c(gp)
or a1,s2,zero
or a0,s2,zero
subu v1,v0,s8
lw v0,0x48(sp)
and v1,v1,v0
lw v0,0x40(sp)
sll v1,v1,0x2
addu s7,v0,v1
jalr t9
_lw a2,0x0(s7)
beq v0,zero,0x00042fec
_lw gp,0x30(sp)
lw v0,-0x4(s1)
addiu v0,v0,0x1
bne v0,zero,0x00042fec
_sw v0,-0x4(s1)
lw v0,0xe0(sp)
subu a2,s6,v0
slti v0,a2,0x2
bne v0,zero,0x00042fe4
_lw v0,0x4c(sp)
lw v0,0x0(s1)
addiu v0,v0,0x1
bne v0,zero,0x00042fec
_sw v0,0x0(s1)
li v0,0x2
beq a2,v0,0x00042fe4
_lw v0,0x4c(sp)
lw v0,0x4(s1)
addiu v0,v0,0x1
bne v0,zero,0x00042fec
_sw v0,0x4(s1)
addiu a0,s1,0x8
b 0x00042fdc
_li a1,0x3
lw v0,0x0(a0)
addiu a0,a0,0x4
addiu a1,a1,0x1
addiu v0,v0,0x1
bne v0,zero,0x00042fec
_sw v0,-0x4(a0)
bne a2,a1,0x00042fc4
_lw v0,0x4c(sp)
addiu v0,v0,0x1
sw v0,0x4c(sp)
lw a1,0x38(sp)
addiu v1,s8,0x1
lw v0,0x0(s7)
lw a0,0x44(sp)
sw v1,0x0(a1)
addu v0,v0,s5
b 0x0004301c
_or v1,s4,zero
lw a1,0x0(v0)
lw a2,0x4(a0)
bne a1,a2,0x0004390c
_addiu v0,v0,-0x4
addiu v1,v1,-0x1
bgez v1,0x0004300c
_addiu a0,a0,-0x4
addiu a0,a0,0x4
lw v0,0xe4(sp)
addiu s8,s8,-0x1
addu s2,s2,s3
addu s1,s1,s3
addu s6,s6,v0
li v0,-0x1
bne s8,v0,0x00042f2c
_addu s0,s0,s3
lw v0,0x4c(sp)
beq v0,s8,0x00043e0c
_or v1,v0,zero
li v0,0x1
beq v1,v0,0x00044438
_lw v1,0x50(sp)
lw v0,0x50(sp)
lw v1,0x54(sp)
subu s0,v0,v1
bgtz s0,0x00043a90
_or v1,v0,zero
lw v0,0xcc(sp)
addu s0,v0,s0
lw v0,0x54(sp)
subu s6,v0,v1
lw v0,0xcc(sp)
beq v0,zero,0x000430e4
_or a3,s0,zero
lw v1,0x78(sp)
addiu v0,v0,-0x1
beq v0,zero,0x000446ec
_lw a1,0x0(v1)
addiu a0,v1,0x4
lw v1,0x7c(sp)
addiu v1,v1,0x4
sw a1,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x000430ac
_lw a1,-0x4(a0)
lw v0,0xcc(sp)
lw v1,0x7c(sp)
sll v0,v0,0x2
addiu v0,v0,-0x4
addu v0,v1,v0
sw a1,0x0(v0)
lw v0,0xcc(sp)
or a3,s0,zero
lw s1,0x7c(sp)
sll s0,s0,0x2
lw t9,-0x7b2c(gp)
sll a2,v0,0x2
lw v0,0x78(sp)
or a1,s1,zero
or a0,s1,zero
jalr t9
_addu a2,v0,a2
addu v1,s1,s0
lw gp,0x30(sp)
lw a0,0x0(v1)
subu a1,a0,v0
sltu v0,a0,v0
beq v0,zero,0x00043a88
_sw a1,0x0(v1)
slti v0,s6,0x2
bne v0,zero,0x00043184
_nop
lw v0,0x4(v1)
addiu a0,v0,-0x1
bne v0,zero,0x00043a88
_sw a0,0x4(v1)
li v0,0x2
beq s6,v0,0x00043184
_nop
lw s1,0x8(v1)
addiu v0,s1,-0x1
bne s1,zero,0x00043a88
_sw v0,0x8(v1)
addiu v0,v1,0xc
b 0x0004317c
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x00043208
_sw a1,-0x4(v0)
bne s6,v1,0x00043168
_addiu v1,v1,0x1
lw v1,0x7c(sp)
lw v0,0x0(v1)
addiu v0,v0,0x1
bne v0,zero,0x00043a88
_sw v0,0x0(v1)
lw v0,0xcc(sp)
slti v0,v0,0x2
bne v0,zero,0x00043204
_nop
lw v0,0x4(v1)
addiu v0,v0,0x1
bne v0,zero,0x00043a88
_sw v0,0x4(v1)
lw a0,0xcc(sp)
li v0,0x2
beq a0,v0,0x00043204
_nop
lw v0,0x8(v1)
addiu v0,v0,0x1
bne v0,zero,0x00043a88
_sw v0,0x8(v1)
or a1,a0,zero
addiu v1,v1,0xc
b 0x000431fc
_li a0,0x3
lw v0,0x0(v1)
addiu v1,v1,0x4
addiu v0,v0,0x1
bne v0,zero,0x00043a88
_sw v0,-0x4(v1)
bne a1,a0,0x000431e8
_addiu a0,a0,0x1
li s1,0x1
lw v1,0x84(sp)
or v0,s1,zero
lw a0,0x9c(sp)
lw v1,0x0(v1)
bne a0,v1,0x00045bf4
_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
or v0,s1,zero
or s2,zero,zero
b 0x0004265c
_sw a2,0x0(v0)
lw a0,0x60(sp)
li s4,0x8
lw v0,-0x7fc8(gp)
or s7,a3,zero
lw a1,0xe8(sp)
lw v1,0x3c(sp)
addiu a0,a0,-0xc
lw t2,0x4(a0)
addiu t9,v0,0x1610
sll s8,a1,0x4
sw a0,0x6c(sp)
sra v1,v1,0x3
sw t9,0x5c(sp)
or s2,a0,zero
sw t2,0x38(sp)
or a2,a0,zero
sw v1,0x70(sp)
or a1,v1,zero
sw s1,0x18(sp)
or a3,s8,zero
sw s8,0x68(sp)
or a0,s7,zero
sw s4,0x14(sp)
sw s0,0x10(sp)
bal 0x00041610
_or s5,v1,zero
addiu a0,s7,0x10
lw t9,0x5c(sp)
or a2,s2,zero
sw s1,0x18(sp)
or a3,s8,zero
sw s4,0x14(sp)
or a1,s5,zero
sw s0,0x10(sp)
jalr t9
_addiu s2,s7,0x8
addiu v0,s7,0x18
lw gp,0x30(sp)
blez s5,0x00045aa4
_sw v0,0x74(sp)
lw t2,0x38(sp)
sll v0,s5,0x3
lw s8,-0x7fc8(gp)
sll s4,s0,0x2
sw v0,0x80(sp)
addu v0,t2,v0
sw s3,0x88(sp)
sw s6,0x8c(sp)
addu s5,s1,s4
sw v0,0x64(sp)
addiu v0,s8,0x790
sw s2,0x90(sp)
or s3,t2,zero
sw v0,0x38(sp)
b 0x000433a0
_or s6,s7,zero
lw s7,0x0(s6)
or a3,s0,zero
lw t0,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s2,s7,s4
or a1,s7,zero
or a0,s7,zero
lw v0,0x0(s2)
jalr t9
_addu s8,v0,t0
addu v0,s8,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s2)
lw v0,0x0(s7)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x00043454
_sw a1,0x0(s7)
lw v0,0x64(sp)
addiu s3,s3,0x8
beq s3,v0,0x0004470c
_addiu s6,s6,0x20
lw v0,0x54(sp)
or a3,s0,zero
lw a2,0x0(s3)
or a0,s1,zero
lw a1,0x10(s6)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s6)
lw s2,0x10(s6)
lw s8,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s4
or a0,s2,zero
jalr t9
_lw s7,0x0(v0)
addu a2,s2,s4
addu v0,s8,v0
lw gp,0x30(sp)
subu a1,s7,v0
subu a0,v0,s7
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s2)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x0004333c
_sw a0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
bne v0,zero,0x0004333c
_sw v0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
beq v0,zero,0x00043424
_sw v0,0x0(s2)
b 0x00043340
_lw s7,0x0(s6)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x00043390
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x00043454
_sw v1,0x0(s7)
b 0x00043394
_lw v0,0x64(sp)
li s2,-0x4
lw s5,0x44(sp)
addiu s4,s0,0x1
lw t9,-0x7d0c(gp)
or a0,a1,zero
or a3,s4,zero
jalr t9
_lw a2,0x8(s5)
or a3,s4,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x8(s5)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x0(s5)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00043564
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00044700
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x0004355c
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044700
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x0004355c
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044700
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00043554
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x00044700
_sw a2,-0x4(v1)
bne s0,a0,0x0004353c
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x00043604
_lw v1,0x44(sp)
lw v0,0x44(sp)
lw v0,0x8(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x000454d8
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x000435f8
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x000454d8
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x000435f8
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x000454d8
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x000435f0
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu v1,v1,0x1
bne v1,zero,0x000454d8
_sw v1,-0x4(v0)
bne s0,a0,0x000435d8
_nop
li v0,0x1
sw v0,0x0(a1)
lw v1,0x44(sp)
li v0,-0x1
beq s0,v0,0x00045500
_lw a1,0x4(v1)
beq s0,zero,0x000454f4
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00043624
_lw a2,-0x4(a0)
addu s5,s1,s2
or v0,s5,zero
sw a2,0x0(v0)
lw s6,0x44(sp)
or a0,a1,zero
lw t9,-0x7d0c(gp)
or a3,s4,zero
jalr t9
_lw a2,0xc(s6)
or a3,s4,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0xc(s6)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x4(s6)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x0004371c
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x000446f4
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00043714
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000446f4
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00043714
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000446f4
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x0004370c
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a2,a1,-0x1
bne a1,zero,0x000446f4
_sw a2,-0x4(v1)
bne s0,a0,0x000436f8
_addiu a0,a0,0x1
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000437b8
_lw s8,-0x7fc8(gp)
lw v0,0x44(sp)
lw v0,0xc(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00044ef8
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x000437ac
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00044ef8
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x000437ac
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00044ef8
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x000437a4
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x00044ef8
_sw v1,-0x4(v0)
bne s0,a0,0x00043790
_addiu a0,a0,0x1
li v0,0x1
sw v0,0x0(a1)
lw s8,-0x7fc8(gp)
or s7,zero,zero
lw s4,0x44(sp)
addiu v0,s8,0x790
sw v0,0x38(sp)
or v0,s4,zero
or s4,s3,zero
b 0x00043850
_or s3,v0,zero
lw s6,0x0(s3)
or a3,s0,zero
lw v1,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s8,s6,s2
or a0,s6,zero
or a1,s6,zero
lw v0,0x0(s8)
addu v1,v0,v1
jalr t9
_sw v1,0x48(sp)
lw v1,0x48(sp)
lw gp,0x30(sp)
addu v0,v1,v0
addiu v1,v0,-0x1
movz v1,zero,v0
subu v0,v0,v1
sw v0,0x0(s8)
lw v0,0x0(s6)
subu a0,v0,v1
sltu v1,v0,v1
bne v1,zero,0x00043f2c
_sw a0,0x0(s6)
lw v0,0x4c(sp)
addiu s7,s7,0x1
addiu s4,s4,0x8
slt v0,s7,v0
beq v0,zero,0x00043f5c
_addiu s3,s3,0x8
lw v0,0x58(sp)
or a3,s0,zero
lw a2,0x0(s4)
or a0,s1,zero
lw a1,0x4(s3)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a3,s0,zero
lw gp,0x30(sp)
or a2,s1,zero
lw a1,0x0(s3)
lw s6,0x4(s3)
lw v1,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s2
or a0,s6,zero
sw v1,0x48(sp)
jalr t9
_lw s8,0x0(v0)
addu a1,s6,s2
lw v1,0x48(sp)
lw gp,0x30(sp)
addu v1,v1,v0
subu a0,s8,v1
subu v1,v1,s8
sra v0,a0,0x1f
and v0,v0,v1
addu a0,a0,v0
sw a0,0x0(a1)
lw v1,0x0(s6)
addu v1,v0,v1
sltu v0,v1,v0
beq v0,zero,0x000437d8
_sw v1,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
bne v0,zero,0x000437d8
_sw v0,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
beq v0,zero,0x000438dc
_sw v0,0x0(s6)
b 0x000437dc
_lw s6,0x0(s3)
sltu a1,a2,a1
beq a1,zero,0x00043030
_lw v0,0xe4(sp)
lw v0,0x0(s2)
addiu v1,v0,-0x1
bne v0,zero,0x00043998
_sw v1,0x0(s2)
addiu a2,s6,0x1
slti v0,a2,0x2
bne v0,zero,0x00043990
_lw v0,0x4c(sp)
lw v0,0x4(s2)
addiu v1,v0,-0x1
bne v0,zero,0x00043998
_sw v1,0x4(s2)
li v0,0x2
beq a2,v0,0x00043990
_lw v0,0x4c(sp)
lw v0,0x8(s2)
addiu v1,v0,-0x1
bne v0,zero,0x00043998
_sw v1,0x8(s2)
addiu v0,s2,0xc
b 0x00043984
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x00043998
_sw a1,-0x4(v0)
bne a2,v1,0x00043970
_addiu v1,v1,0x1
lw v0,0x4c(sp)
addiu v0,v0,-0x1
sw v0,0x4c(sp)
lw v0,0x0(s0)
addiu v1,v0,-0x1
bne v0,zero,0x0004302c
_sw v1,0x0(s0)
lw v0,0x58(sp)
addu a2,v0,s6
slti v0,a2,0x2
bne v0,zero,0x00043a18
_lw v0,0x4c(sp)
lw v0,0x4(s0)
addiu v1,v0,-0x1
bne v0,zero,0x0004302c
_sw v1,0x4(s0)
li v0,0x2
beq a2,v0,0x00043a18
_lw v0,0x4c(sp)
lw v0,0x8(s0)
addiu v1,v0,-0x1
bne v0,zero,0x0004302c
_sw v1,0x8(s0)
addiu v0,s0,0xc
b 0x00043a0c
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
addiu a1,a0,-0x1
bne a0,zero,0x0004302c
_sw a1,-0x4(v0)
bne a2,v1,0x000439f4
_nop
lw v0,0x4c(sp)
addiu v0,v0,-0x1
b 0x0004302c
_sw v0,0x4c(sp)
lw v0,0x50(sp)
or a3,s3,zero
lw a2,0x38(sp)
or a1,s6,zero
lw a0,0x64(sp)
lw t9,0x54(sp)
sw s7,0x20(sp)
sw s5,0x1c(sp)
sw s1,0x18(sp)
sw v0,0x14(sp)
jalr t9
_sw t1,0x10(sp)
b 0x00042bf8
_lw v0,0x5c(sp)
b 0x00042e20
_sw zero,0x0(s4)
b 0x00042b18
_sw zero,0x0(t0)
b 0x00042b88
_sw zero,0x0(a3)
lw v0,0x48(sp)
bgez v0,0x00042eac
_li v1,-0x1
b 0x00043068
_lw v0,0x50(sp)
b 0x00043208
_or s1,zero,zero
lw v0,0xcc(sp)
or a3,s0,zero
lw s1,0x78(sp)
lw s2,0x7c(sp)
sll a2,v0,0x3
lw t9,-0x7d0c(gp)
or a1,s1,zero
addu a2,s1,a2
jalr t9
_or a0,s2,zero
sll v1,s0,0x2
lw gp,0x30(sp)
addu a3,s1,v1
addu a0,s2,v1
lw v1,0xcc(sp)
subu s0,v1,s0
lw v1,0x0(a3)
addu v1,v0,v1
sltu v0,v1,v0
beq v0,zero,0x000444d4
_sw v1,0x0(a0)
slti v0,s0,0x2
bne v0,zero,0x00043b4c
_nop
lw v0,0x4(a3)
addiu v0,v0,0x1
bne v0,zero,0x00044eb8
_sw v0,0x4(a0)
li v0,0x2
beq s0,v0,0x00043b4c
_nop
lw v0,0x8(a3)
addiu v0,v0,0x1
bne v0,zero,0x00045bec
_sw v0,0x8(a0)
addiu a2,a3,0xc
addiu a1,a0,0xc
b 0x00043b44
_li v1,0x3
lw v0,0x0(a2)
addiu v1,v1,0x1
addiu a2,a2,0x4
addiu v0,v0,0x1
bne v0,zero,0x00044ebc
_sw v0,-0x4(a1)
bne s0,v1,0x00043b2c
_addiu a1,a1,0x4
li s1,0x1
lw v0,0xcc(sp)
lw s2,0x7c(sp)
lw t9,-0x7b2c(gp)
sll s0,v0,0x2
or a3,v0,zero
lw v0,0x78(sp)
or a0,s2,zero
or a1,s2,zero
addu a2,v0,s0
jalr t9
_addu s0,s2,s0
lw gp,0x30(sp)
lw v1,0x0(s0)
subu a0,v1,v0
sltu v0,v1,v0
beq v0,zero,0x00043208
_sw a0,0x0(s0)
addiu s1,s1,-0x1
li v0,-0x1
beq s1,v0,0x00043184
_lw v1,0x84(sp)
b 0x00043210
_or v0,s1,zero
lw t9,-0x7d50(gp)
sll s6,s0,0x3
addiu a0,sp,0x98
jalr t9
_or a1,s6,zero
sll s2,s0,0x2
lw v1,0x3c(sp)
or s3,v0,zero
sll v0,s0,0x1
lw gp,0x30(sp)
addu s5,s3,s2
blez v1,0x00042c64
_sw v0,0x48(sp)
slti v0,v0,0x2
sw s1,0x5c(sp)
addu v1,s3,s6
sw v0,0x4c(sp)
or s4,zero,zero
slti v0,s0,0x2
sw v1,0x54(sp)
sw v0,0x50(sp)
lw a0,0x44(sp)
sll v0,s4,0x2
addu v1,a0,v0
addu v0,s8,v0
lw s6,0x0(v1)
beq a0,s8,0x00043df0
_lw s1,0x0(v0)
lw t9,-0x7cdc(gp)
or a3,s0,zero
or a2,s6,zero
or a1,s1,zero
jalr t9
_or a0,s3,zero
lw gp,0x30(sp)
addu s7,s6,s2
lw t0,0x0(s7)
bne t0,zero,0x00043d08
_addu t2,s1,s2
lw v0,0x0(t2)
bne v0,zero,0x00043d3c
_lw t9,-0x7d0c(gp)
lw t9,-0x7b2c(gp)
or a3,s0,zero
or a2,s5,zero
or a1,s3,zero
jalr t9
_or a0,s6,zero
beq v0,zero,0x00043d00
_lw gp,0x30(sp)
lw v0,0x0(s6)
addiu v0,v0,0x1
bne v0,zero,0x00043d00
_sw v0,0x0(s6)
lw v0,0x50(sp)
bne v0,zero,0x00043ce4
_li v0,0x1
lw v0,0x4(s6)
addiu v0,v0,0x1
bne v0,zero,0x00043d00
_sw v0,0x4(s6)
li v0,0x2
beq s0,v0,0x00043ce4
_li v0,0x1
lw v0,0x8(s6)
addiu v0,v0,0x1
bne v0,zero,0x00043d00
_sw v0,0x8(s6)
b 0x00043cd8
_addiu v0,s6,0xc
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x00043d00
_sw v1,-0x4(v0)
bne s7,v0,0x00043cc4
_nop
li v0,0x1
sw v0,0x0(s7)
addiu s4,s4,0x1
lw v0,0x3c(sp)
bne v0,s4,0x00043c04
_lw a0,0x44(sp)
b 0x00042c64
_lw s1,0x5c(sp)
b 0x00043ce4
_or v0,zero,zero
lw t9,-0x7d0c(gp)
or a0,s5,zero
sw t2,0x38(sp)
or a3,s0,zero
or a2,s1,zero
jalr t9
_or a1,s5,zero
lw t2,0x38(sp)
or t0,v0,zero
lw a0,0x0(t2)
beq a0,zero,0x00043d68
_lw gp,0x30(sp)
lw t9,-0x7d0c(gp)
or a0,s5,zero
sw t0,0x38(sp)
or a3,s0,zero
or a2,s6,zero
jalr t9
_or a1,s5,zero
lw t0,0x38(sp)
lw a0,0x0(s7)
lw gp,0x30(sp)
addu t0,t0,v0
addu t0,t0,a0
beq t0,zero,0x00043c58
_lw t9,-0x7b2c(gp)
lw v0,0x0(s3)
addu v0,t0,v0
sltu t0,v0,t0
beq t0,zero,0x00043c58
_sw v0,0x0(s3)
lw v0,0x4c(sp)
bne v0,zero,0x00043c5c
_or a3,s0,zero
lw v0,0x4(s3)
addiu v0,v0,0x1
bne v0,zero,0x00043c58
_sw v0,0x4(s3)
lw v0,0x48(sp)
li v1,0x2
beq v0,v1,0x00043c60
_or a2,s5,zero
lw v0,0x8(s3)
addiu v0,v0,0x1
bne v0,zero,0x00043c58
_sw v0,0x8(s3)
addiu v0,s3,0xc
b 0x00043de0
_lw a0,0x54(sp)
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x00043c54
_sw v1,-0x4(v0)
bne a0,v0,0x00043dcc
_lw t9,-0x7b2c(gp)
b 0x00043c5c
_or a3,s0,zero
lw t9,-0x7cac(gp)
or a2,s0,zero
or a1,s6,zero
jalr t9
_or a0,s3,zero
b 0x00043c38
_lw gp,0x30(sp)
lw v0,0x50(sp)
lw v1,0xcc(sp)
subu a0,v0,v1
lw v0,0x78(sp)
sll a0,a0,0x2
addu v0,v0,a0
lw v1,0x0(v0)
addiu v1,v1,0x1
bne v1,zero,0x00043064
_sw v1,0x0(v0)
lw v1,0xcc(sp)
slti v1,v1,0x2
bne v1,zero,0x00045b58
_lw v1,0x78(sp)
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00043064
_sw v1,0x4(v0)
lw a1,0xcc(sp)
li v1,0x2
beq a1,v1,0x00043ea4
_lw v1,0x78(sp)
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00043064
_sw v1,0x8(v0)
or a2,a1,zero
addiu v0,v0,0xc
b 0x00043e9c
_li a1,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a1,a1,0x1
addiu v1,v1,0x1
bne v1,zero,0x00043064
_sw v1,-0x4(v0)
bne a2,a1,0x00043e84
_lw v1,0x78(sp)
addiu v0,a0,-0x4
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043f0c
_sw a0,0x0(v0)
lw v1,0x4(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043f0c
_sw a0,0x4(v0)
lw v1,0x8(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043f0c
_sw a0,0x8(v0)
addiu v0,v0,0xc
lw a2,0xcc(sp)
b 0x00043f00
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x00043f0c
_sw a1,-0x4(v0)
slt a0,a2,v1
beq a0,zero,0x00043eec
_addiu v1,v1,0x1
lw v0,0x5c(sp)
lw v1,0x78(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v1,0x0(v0)
addiu v1,v1,-0x1
b 0x00043064
_sw v1,0x0(v0)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
bne v0,zero,0x00043838
_sw v1,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
beq v0,zero,0x00043f2c
_sw v1,0x0(s6)
b 0x0004383c
_lw v0,0x4c(sp)
lw v0,0xf4(sp)
bne v0,zero,0x000427e4
_li v0,0x1
lw v1,0x60(sp)
li v0,0x2
lw s4,0x0(v1)
lw v1,0x4c(sp)
bne v1,v0,0x00045540
_lw v1,0x40(sp)
li v0,-0x1
beq s0,v0,0x00043fc0
_lw a1,0x0(v1)
beq s0,zero,0x000459e8
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00043fa0
_lw a2,-0x4(a0)
addu v0,s1,s2
sw a2,0x0(v0)
lw s5,0x40(sp)
addiu s6,s0,0x1
lw t9,-0x7d0c(gp)
or a0,a1,zero
or a3,s6,zero
or s3,s2,zero
jalr t9
_lw a2,0x8(s5)
or a3,s6,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x8(s5)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x48(sp)
jalr t9
_or a2,v0,zero
lw v1,0x0(s5)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x000440a0
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00045a58
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00044098
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a58
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00044098
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a58
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00044090
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x00045a58
_sw a2,-0x4(v1)
bne s0,a0,0x00044078
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x0004413c
_lw v1,0x40(sp)
lw v0,0x40(sp)
lw v0,0x8(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00045a6c
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x00044130
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a6c
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x00044130
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a6c
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x00044128
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
bne a0,zero,0x00045a6c
_sw a0,-0x4(v0)
bne s0,v1,0x00044114
_addiu v1,v1,0x1
li v0,0x1
sw v0,0x0(a1)
lw v1,0x40(sp)
li v0,-0x1
beq s0,v0,0x00045a64
_lw a1,0x4(v1)
beq s0,zero,0x000459dc
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004415c
_lw a2,-0x4(a0)
addu s5,s1,s2
or v0,s5,zero
sw a2,0x0(v0)
lw s7,0x40(sp)
or a0,a1,zero
lw t9,-0x7d0c(gp)
or a3,s6,zero
jalr t9
_lw a2,0xc(s7)
or a3,s6,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0xc(s7)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x48(sp)
jalr t9
_or a2,v0,zero
lw v1,0x4(s7)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00044250
_addiu a0,a0,-0x1
lw a1,0x0(v1)
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00045a50
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00044248
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a50
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00044248
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a50
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00044240
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a2,a1,-0x1
bne a1,zero,0x00045a50
_sw a2,-0x4(v1)
bne s0,a0,0x0004422c
_addiu a0,a0,0x1
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000442ec
_or s7,zero,zero
lw v0,0x40(sp)
lw v0,0xc(v0)
addu s2,v0,s2
lw a0,0x0(v0)
lw v1,0x0(s2)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00045a78
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x000442e0
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a78
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x000442e0
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a78
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x000442d8
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
bne a0,zero,0x00045a78
_sw a0,-0x4(v0)
bne s0,v1,0x000442c4
_addiu v1,v1,0x1
li v0,0x1
sw v0,0x0(s2)
or s7,zero,zero
b 0x0004436c
_lw s2,0x40(sp)
lw s6,0x0(s2)
or a3,s0,zero
lw v1,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s8,s6,s3
or a0,s6,zero
or a1,s6,zero
lw v0,0x0(s8)
addu v1,v0,v1
jalr t9
_sw v1,0x48(sp)
lw v1,0x48(sp)
lw gp,0x30(sp)
addu v0,v1,v0
addiu v1,v0,-0x1
movz v1,zero,v0
subu v0,v0,v1
sw v0,0x0(s8)
lw v0,0x0(s6)
subu a0,v0,v1
sltu v1,v0,v1
bne v1,zero,0x00045948
_sw a0,0x0(s6)
lw v0,0x4c(sp)
addiu s7,s7,0x1
addiu s4,s4,0x8
slt v0,s7,v0
beq v0,zero,0x000446c0
_addiu s2,s2,0x8
lw v0,0x58(sp)
or a3,s0,zero
lw a2,0x0(s4)
or a0,s1,zero
lw a1,0x4(s2)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a3,s0,zero
lw gp,0x30(sp)
or a2,s1,zero
lw a1,0x0(s2)
lw s6,0x4(s2)
lw v1,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s3
or a0,s6,zero
sw v1,0x48(sp)
jalr t9
_lw s8,0x0(v0)
addu a1,s6,s3
lw v1,0x48(sp)
lw gp,0x30(sp)
addu v1,v1,v0
subu a0,s8,v1
subu v1,v1,s8
sra v0,a0,0x1f
and v0,v0,v1
addu a0,a0,v0
sw a0,0x0(a1)
lw v1,0x0(s6)
addu v1,v0,v1
sltu v0,v1,v0
beq v0,zero,0x000442f4
_sw v1,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
bne v0,zero,0x000442f4
_sw v0,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
beq v0,zero,0x000443f8
_sw v0,0x0(s6)
b 0x000442f8
_lw s6,0x0(s2)
b 0x00042734
_li v1,0x1
b 0x00042d44
_sw zero,0x0(s5)
lw t0,0x54(sp)
slt v0,v1,t0
bne v0,zero,0x00044e14
_or v0,v1,zero
subu a1,v1,t0
lw v0,0x78(sp)
li a3,0x2
sll a1,a1,0x2
slti a2,t0,0x2
addu a1,v0,a1
lw v0,0x0(a1)
addiu v0,v0,0x1
bne v0,zero,0x00043064
_sw v0,0x0(a1)
bne a2,zero,0x00044468
_addiu v0,v0,0x1
lw v0,0x4(a1)
addiu v0,v0,0x1
bne v0,zero,0x00043064
_sw v0,0x4(a1)
beq t0,a3,0x00044460
_nop
lw v0,0x8(a1)
addiu v0,v0,0x1
bne v0,zero,0x00043064
_sw v0,0x8(a1)
addiu v1,a1,0xc
li a0,0x3
beq a0,t0,0x00044460
_addiu a0,a0,0x1
lw v0,0x0(v1)
addiu v1,v1,0x4
addiu v0,v0,0x1
beq v0,zero,0x000444a8
_sw v0,-0x4(v1)
b 0x00043068
_lw v0,0x50(sp)
b 0x000427d0
_or v0,zero,zero
beq a0,a3,0x00044504
_slti v0,s0,0x2
bne v0,zero,0x00044504
_addiu v1,a3,0x4
sll s0,s0,0x2
addiu v0,a0,0x4
addu s0,a3,s0
lw a0,0x0(v1)
addiu v0,v0,0x4
addiu v1,v1,0x4
bne v1,s0,0x000444f0
_sw a0,-0x4(v0)
b 0x00043b50
_or s1,zero,zero
li v0,-0x1
beq s0,v0,0x0004454c
_lw a1,0x0(v1)
beq s0,zero,0x000459a4
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004452c
_lw a2,-0x4(a0)
addu v0,s1,s2
sw a2,0x0(v0)
lw s4,0x40(sp)
or a0,a1,zero
lw t9,-0x7d0c(gp)
or a3,s3,zero
jalr t9
_lw a2,0x4(s4)
or a3,s3,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x4(s4)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x38(sp)
jalr t9
_or a2,v0,zero
lw v1,0x0(s4)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00044624
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x000446dc
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x0004461c
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000446dc
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x0004461c
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x000446dc
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00044614
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x000446dc
_sw a2,-0x4(v1)
bne s0,a0,0x000445fc
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x000446c4
_lw v0,0x44(sp)
lw v0,0x40(sp)
lw v0,0x4(v0)
addu s2,v0,s2
lw a0,0x0(v0)
lw v1,0x0(s2)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x000446e4
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x000446b8
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x000446e4
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x000446b8
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x000446e4
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x000446b0
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu v1,v1,0x1
bne v1,zero,0x000446e4
_sw v1,-0x4(v0)
bne s0,a0,0x00044698
_nop
li v0,0x1
sw v0,0x0(s2)
lw v0,0x44(sp)
lw s8,0x40(sp)
beq v0,s8,0x00045c00
_sw zero,0x98(sp)
sw zero,0x5c(sp)
b 0x000427f4
_li s5,0x270
b 0x00044620
_li v1,0x1
b 0x000446bc
_or v0,zero,zero
b 0x000430d8
_lw v0,0x7c(sp)
li v1,0x1
b 0x0004371c
_sw v1,0x0(a3)
li v1,0x1
b 0x00043564
_sw v1,0x0(a3)
lw v0,0x60(sp)
li s8,0x8
lw s2,0x90(sp)
lw a3,0x68(sp)
lw a2,0x6c(sp)
lw a1,0x70(sp)
or a0,s2,zero
lw t9,0x5c(sp)
lw s7,-0x8(v0)
lw s6,0x8c(sp)
lw s3,0x88(sp)
sw s1,0x18(sp)
sw s8,0x14(sp)
jalr t9
_sw s0,0x10(sp)
lw a3,0x68(sp)
lw a2,0x6c(sp)
lw a1,0x70(sp)
lw a0,0x74(sp)
lw t9,0x5c(sp)
sw s1,0x18(sp)
sw s8,0x14(sp)
jalr t9
_sw s0,0x10(sp)
lw v0,0x80(sp)
sw s3,0x74(sp)
sw s6,0x80(sp)
or s6,s7,zero
addu v0,s7,v0
or s7,s2,zero
b 0x000447f4
_sw v0,0x64(sp)
lw s3,0x0(s7)
or a3,s0,zero
lw t0,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s2,s3,s4
or a1,s3,zero
or a0,s3,zero
lw v0,0x0(s2)
jalr t9
_addu s8,v0,t0
lw gp,0x30(sp)
addu v0,s8,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s2)
lw v0,0x0(s3)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x000448a8
_sw a1,0x0(s3)
lw v0,0x64(sp)
addiu s6,s6,0x8
beq s6,v0,0x000448d8
_addiu s7,s7,0x20
lw v0,0x54(sp)
or a3,s0,zero
lw a2,0x0(s6)
or a0,s1,zero
lw a1,0x10(s7)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s7)
lw s2,0x10(s7)
lw s8,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s4
or a0,s2,zero
jalr t9
_lw s3,0x0(v0)
addu a2,s2,s4
addu v0,s8,v0
lw gp,0x30(sp)
subu a1,s3,v0
subu a0,v0,s3
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s2)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x0004478c
_sw a0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
bne v0,zero,0x0004478c
_sw v0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
beq v0,zero,0x00044878
_sw v0,0x0(s2)
b 0x00044790
_lw s3,0x0(s7)
addiu s3,s3,0x4
lw v0,0x0(s3)
addiu v1,v0,-0x1
bne v0,zero,0x000447e4
_sw v1,0x0(s3)
addiu s3,s3,0x4
lw v0,0x0(s3)
addiu v1,v0,-0x1
beq v0,zero,0x000448a8
_sw v1,0x0(s3)
b 0x000447e8
_lw v0,0x64(sp)
lw s3,0x74(sp)
lw s6,0x80(sp)
lw v0,0x48(sp)
blez v0,0x00045a84
_sll s2,s0,0x2
addu s5,s1,s2
lw s8,-0x7fc8(gp)
or s7,zero,zero
lw s4,0x44(sp)
sw s3,0x64(sp)
or s3,s6,zero
addiu v0,s8,0x790
b 0x00044988
_sw v0,0x38(sp)
lw s6,0x0(s4)
or a3,s0,zero
lw t0,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s8,s6,s2
or a1,s6,zero
or a0,s6,zero
lw v0,0x0(s8)
addu t0,v0,t0
jalr t9
_sw t0,0x5c(sp)
lw t0,0x5c(sp)
lw gp,0x30(sp)
addu v0,t0,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s8)
lw v0,0x0(s6)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x00044a44
_sw a1,0x0(s6)
lw v0,0x48(sp)
addiu s7,s7,0x1
addiu s3,s3,0x8
slt v0,s7,v0
beq v0,zero,0x00044a74
_addiu s4,s4,0x10
lw v0,0x50(sp)
or a3,s0,zero
lw a2,0x0(s3)
or a0,s1,zero
lw a1,0x8(s4)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s4)
lw s6,0x8(s4)
lw t0,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s2
or a0,s6,zero
sw t0,0x5c(sp)
jalr t9
_lw s8,0x0(v0)
addu a2,s6,s2
lw t0,0x5c(sp)
lw gp,0x30(sp)
addu v0,t0,v0
subu a1,s8,v0
subu a0,v0,s8
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s6)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x00044910
_sw a0,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
bne v0,zero,0x00044910
_sw v0,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v0,v0,0x1
beq v0,zero,0x00044a14
_sw v0,0x0(s6)
b 0x00044914
_lw s6,0x0(s4)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
bne v0,zero,0x00044970
_sw v1,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
beq v0,zero,0x00044a44
_sw v1,0x0(s6)
b 0x00044974
_lw v0,0x48(sp)
lw a0,0x44(sp)
li v0,0x2
lw v1,0x60(sp)
lw s3,0x64(sp)
addiu s4,a0,0x4
lw a0,0x48(sp)
bne a0,v0,0x00044f04
_lw s7,-0x4(v1)
lw v1,0x44(sp)
li v0,-0x1
beq s0,v0,0x00044ad8
_lw a1,0x4(v1)
beq s0,zero,0x000459b8
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00044ab8
_lw a2,-0x4(a0)
addu v0,s1,s2
sw a2,0x0(v0)
lw s6,0x44(sp)
addiu v0,s0,0x1
lw t9,-0x7d0c(gp)
or a0,a1,zero
or a3,v0,zero
sw v0,0x5c(sp)
or s5,v0,zero
jalr t9
_lw a2,0x14(s6)
or a3,s5,zero
lw gp,0x30(sp)
or a1,s1,zero
lw v0,0x14(s6)
or s5,s2,zero
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x64(sp)
jalr t9
_or a2,v0,zero
lw v1,0x4(s6)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00044bc0
_lw gp,0x30(sp)
lw a1,0x0(v1)
addiu a0,a0,-0x1
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00044e0c
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00044bb8
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044e0c
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00044bb8
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00044e0c
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00044bb0
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x00044e0c
_sw a2,-0x4(v1)
bne s0,a0,0x00044b98
_nop
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x00044c60
_lw v1,0x44(sp)
lw v0,0x44(sp)
lw v0,0x14(v0)
addu a1,v0,s2
lw a0,0x0(v0)
lw v1,0x0(a1)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x000459d0
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x00044c54
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x000459d0
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x00044c54
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x000459d0
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x00044c4c
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu v1,v1,0x1
bne v1,zero,0x000459d0
_sw v1,-0x4(v0)
bne s0,a0,0x00044c34
_nop
li v0,0x1
sw v0,0x0(a1)
lw v1,0x44(sp)
li v0,-0x1
beq s0,v0,0x00045a48
_lw a1,0xc(v1)
beq s0,zero,0x000459ac
_lw a2,0x0(a1)
addiu a0,a1,0x4
or v1,s1,zero
or v0,s0,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00044c80
_lw a2,-0x4(a0)
addu s6,s1,s2
or v0,s6,zero
sw a2,0x0(v0)
lw s8,0x44(sp)
or a0,a1,zero
lw t9,-0x7d0c(gp)
lw a3,0x5c(sp)
jalr t9
_lw a2,0x1c(s8)
or a1,s1,zero
lw gp,0x30(sp)
lw v0,0x1c(s8)
lw a3,0x5c(sp)
lw t9,-0x7b2c(gp)
or a0,v0,zero
sw v0,0x5c(sp)
jalr t9
_or a2,v0,zero
lw v1,0xc(s8)
addu a3,v1,s2
lw a0,0x0(a3)
sltiu a1,a0,0x2
bne a1,zero,0x00044d74
_addiu a0,a0,-0x1
lw a1,0x0(v1)
subu a2,a1,a0
sltu a0,a1,a0
beq a0,zero,0x00045a04
_sw a2,0x0(v1)
slti a0,s0,0x2
bne a0,zero,0x00044d6c
_nop
lw a0,0x4(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a04
_sw a1,0x4(v1)
li a0,0x2
beq s0,a0,0x00044d6c
_nop
lw a0,0x8(v1)
addiu a1,a0,-0x1
bne a0,zero,0x00045a04
_sw a1,0x8(v1)
addiu v1,v1,0xc
b 0x00044d64
_li a0,0x3
lw a1,0x0(v1)
addiu v1,v1,0x4
addiu a2,a1,-0x1
bne a1,zero,0x00045a04
_sw a2,-0x4(v1)
bne s0,a0,0x00044d50
_addiu a0,a0,0x1
or v1,zero,zero
sw v1,0x0(a3)
beq v0,zero,0x0004533c
_lw v0,0x44(sp)
lw v0,0x1c(v0)
addu s2,v0,s2
lw a0,0x0(v0)
lw v1,0x0(s2)
subu a0,a0,v1
subu v1,zero,v1
sltu v1,a0,v1
beq v1,zero,0x00045a0c
_sw a0,0x0(v0)
slti v1,s0,0x2
bne v1,zero,0x00044e00
_nop
lw v1,0x4(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a0c
_sw v1,0x4(v0)
li v1,0x2
beq s0,v1,0x00044e00
_nop
lw v1,0x8(v0)
addiu v1,v1,0x1
bne v1,zero,0x00045a0c
_sw v1,0x8(v0)
addiu v0,v0,0xc
b 0x00044df8
_li a0,0x3
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x00045a0c
_sw v1,-0x4(v0)
bne s0,a0,0x00044de4
_addiu a0,a0,0x1
li v0,0x1
b 0x0004533c
_sw v0,0x0(s2)
b 0x00044bbc
_li v1,0x1
lw v1,0xcc(sp)
subu v0,v0,v1
lw v1,0x78(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043064
_sw a0,0x0(v0)
lw v1,0xcc(sp)
slti v1,v1,0x2
bne v1,zero,0x00043064
_nop
lw v1,0x4(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043064
_sw a0,0x4(v0)
lw a0,0xcc(sp)
li v1,0x2
beq a0,v1,0x00043064
_nop
lw v1,0x8(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043064
_sw a0,0x8(v0)
addiu v0,v0,0xc
lw a2,0xcc(sp)
b 0x00044e9c
_li v1,0x3
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x00043064
_sw a1,-0x4(v0)
bne a2,v1,0x00044e88
_addiu v1,v1,0x1
b 0x00043068
_lw v0,0x50(sp)
addiu v0,v0,-0x1
b 0x00042e38
_sw v0,0x48(sp)
li v1,0x2
beq a0,a3,0x00044504
_slt v0,v1,s0
beq v0,zero,0x00044504
_sll v1,v1,0x2
sll s0,s0,0x2
addu a1,a3,v1
addu v0,a3,s0
addu v1,a0,v1
lw a0,0x0(a1)
addiu v1,v1,0x4
addiu a1,a1,0x4
bne v0,a1,0x00044edc
_sw a0,-0x4(v1)
b 0x00043b50
_or s1,zero,zero
or v0,zero,zero
b 0x000437b4
_sw v0,0x0(a1)
addiu v1,v1,-0xc
lw v0,-0x7fc8(gp)
lw a0,0x3c(sp)
sw v1,0x6c(sp)
lw v1,0xe8(sp)
addiu v0,v0,0x1610
sra a0,a0,0x3
sw v0,0x5c(sp)
or t9,v0,zero
sll v1,v1,0x4
sw a0,0x70(sp)
or s6,a0,zero
sw v1,0x68(sp)
or a3,v1,zero
lw v0,0x60(sp)
li s5,0x8
lw s8,0x6c(sp)
or a1,s6,zero
or a0,s4,zero
lw t2,-0x8(v0)
or a2,s8,zero
sw s1,0x18(sp)
sw s5,0x14(sp)
sw t2,0x38(sp)
jalr t9
_sw s0,0x10(sp)
or a2,s8,zero
lw s2,0x44(sp)
or a1,s6,zero
lw a3,0x68(sp)
lw t9,0x5c(sp)
addiu a0,s2,0x14
sw s1,0x18(sp)
sw s5,0x14(sp)
jalr t9
_sw s0,0x10(sp)
addiu v1,s2,0x1c
lw gp,0x30(sp)
addiu s2,s2,0xc
blez s6,0x00045b00
_sw v1,0x74(sp)
lw t2,0x38(sp)
sll v0,s6,0x3
lw s8,-0x7fc8(gp)
sll s5,s0,0x2
sw v0,0x80(sp)
addu v0,t2,v0
sw s2,0x94(sp)
addu s6,s1,s5
sw s3,0x88(sp)
sw v0,0x64(sp)
addiu v0,s8,0x790
sw s7,0x8c(sp)
or s2,t2,zero
sw v0,0x38(sp)
b 0x0004504c
_sw s4,0x90(sp)
lw s7,0x0(s4)
or a3,s0,zero
lw t0,0x0(s6)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s3,s7,s5
or a1,s7,zero
or a0,s7,zero
lw v0,0x0(s3)
jalr t9
_addu s8,v0,t0
addu v0,s8,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s3)
lw v0,0x0(s7)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x00045100
_sw a1,0x0(s7)
lw v0,0x64(sp)
addiu s2,s2,0x8
beq v0,s2,0x00045130
_addiu s4,s4,0x20
lw v0,0x54(sp)
or a3,s0,zero
lw a2,0x0(s2)
or a0,s1,zero
lw a1,0x10(s4)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s4)
lw s3,0x10(s4)
lw s8,0x0(s6)
lw t9,-0x7b2c(gp)
addu v0,a1,s5
or a0,s3,zero
jalr t9
_lw s7,0x0(v0)
addu a2,s3,s5
addu v0,s8,v0
lw gp,0x30(sp)
subu a1,s7,v0
subu a0,v0,s7
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s3)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x00044fe8
_sw a0,0x0(s3)
addiu s3,s3,0x4
lw v0,0x0(s3)
addiu v0,v0,0x1
bne v0,zero,0x00044fe8
_sw v0,0x0(s3)
addiu s3,s3,0x4
lw v0,0x0(s3)
addiu v0,v0,0x1
beq v0,zero,0x000450d0
_sw v0,0x0(s3)
b 0x00044fec
_lw s7,0x0(s4)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x0004503c
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x00045100
_sw v1,0x0(s7)
b 0x00045040
_lw v0,0x64(sp)
lw v1,0x60(sp)
li v0,0x8
lw s2,0x94(sp)
lw s8,0x70(sp)
lw a3,0x68(sp)
lw t1,-0x8(v1)
or a0,s2,zero
lw a2,0x6c(sp)
or a1,s8,zero
lw t9,0x5c(sp)
lw s3,0x88(sp)
lw s4,0x90(sp)
lw s7,0x8c(sp)
sw t1,0x64(sp)
sw v0,0x14(sp)
sw s1,0x18(sp)
jalr t9
_sw s0,0x10(sp)
li v0,0x8
lw a3,0x68(sp)
or a1,s8,zero
lw a2,0x6c(sp)
lw a0,0x74(sp)
lw t9,0x5c(sp)
sw v0,0x14(sp)
sw s1,0x18(sp)
jalr t9
_sw s0,0x10(sp)
lw t1,0x64(sp)
lw v0,0x80(sp)
sw s3,0x64(sp)
sw s4,0x6c(sp)
or s3,t1,zero
addu v0,t1,v0
sw s7,0x68(sp)
or s4,s2,zero
b 0x00045230
_sw v0,0x5c(sp)
lw s7,0x0(s4)
or a3,s0,zero
lw t0,0x0(s6)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s2,s7,s5
or a1,s7,zero
or a0,s7,zero
lw v0,0x0(s2)
jalr t9
_addu s8,v0,t0
lw gp,0x30(sp)
addu v0,s8,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s2)
lw v0,0x0(s7)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x000452e4
_sw a1,0x0(s7)
lw v0,0x5c(sp)
addiu s3,s3,0x8
beq v0,s3,0x00045314
_addiu s4,s4,0x20
lw v0,0x54(sp)
or a3,s0,zero
lw a2,0x0(s3)
or a0,s1,zero
lw a1,0x10(s4)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s4)
lw s2,0x10(s4)
lw s8,0x0(s6)
lw t9,-0x7b2c(gp)
addu v0,a1,s5
or a0,s2,zero
jalr t9
_lw s7,0x0(v0)
addu a2,s2,s5
addu v0,s8,v0
lw gp,0x30(sp)
subu a1,s7,v0
subu a0,v0,s7
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s2)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x000451c8
_sw a0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
bne v0,zero,0x000451c8
_sw v0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
beq v0,zero,0x000452b4
_sw v0,0x0(s2)
b 0x000451cc
_lw s7,0x0(s4)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x00045220
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x000452e4
_sw v1,0x0(s7)
b 0x00045224
_lw v0,0x5c(sp)
lw s3,0x64(sp)
lw s7,0x68(sp)
lw s4,0x6c(sp)
lw v0,0x48(sp)
blez v0,0x000454b4
_lw s8,-0x7fc8(gp)
sll s5,s0,0x2
addu s6,s1,s5
addiu v0,s8,0x790
sw v0,0x38(sp)
sw s3,0x64(sp)
or s2,zero,zero
b 0x000453c4
_or s3,s7,zero
lw s7,0x0(s4)
or a3,s0,zero
lw t0,0x0(s6)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s8,s7,s5
or a1,s7,zero
or a0,s7,zero
lw v0,0x0(s8)
addu t0,v0,t0
jalr t9
_sw t0,0x5c(sp)
lw t0,0x5c(sp)
lw gp,0x30(sp)
addu v0,t0,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s8)
lw v0,0x0(s7)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x00045480
_sw a1,0x0(s7)
lw v0,0x48(sp)
addiu s2,s2,0x1
addiu s3,s3,0x8
slt v0,s2,v0
beq v0,zero,0x000454b0
_addiu s4,s4,0x10
lw v0,0x50(sp)
or a3,s0,zero
lw a2,0x0(s3)
or a0,s1,zero
lw a1,0x8(s4)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s4)
lw s7,0x8(s4)
lw t0,0x0(s6)
lw t9,-0x7b2c(gp)
addu v0,a1,s5
or a0,s7,zero
sw t0,0x5c(sp)
jalr t9
_lw s8,0x0(v0)
addu a2,s7,s5
lw t0,0x5c(sp)
lw gp,0x30(sp)
addu v0,t0,v0
subu a1,s8,v0
subu a0,v0,s8
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s7)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x0004534c
_sw a0,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v0,v0,0x1
bne v0,zero,0x0004534c
_sw v0,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v0,v0,0x1
beq v0,zero,0x00045450
_sw v0,0x0(s7)
b 0x00045350
_lw s7,0x0(s4)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x000453ac
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x00045480
_sw v1,0x0(s7)
b 0x000453b0
_lw v0,0x48(sp)
lw s3,0x64(sp)
lw v0,0x4c(sp)
blez v0,0x00045988
_sll s2,s0,0x2
b 0x000437b4
_addu s5,s1,s2
jalr t9
_nop
b 0x00042c70
_lw gp,0x30(sp)
or v0,zero,zero
b 0x00043600
_sw v0,0x0(a1)
or v0,s1,zero
or s2,zero,zero
b 0x00043488
_sw a2,0x0(v0)
addu s5,s1,s2
b 0x00043644
_or v0,s1,zero
b 0x00043648
_addu s5,s1,s2
lw a2,-0x7fd4(gp)
li a1,0x1c1
lw a0,-0x7fd4(gp)
lw t9,-0x7c20(gp)
addiu a2,a2,0x4d20
jalr t9
_addiu a0,a0,0x4d14
lw a2,-0x7fd4(gp)
li a1,0x1d7
lw a0,-0x7fd4(gp)
lw t9,-0x7c20(gp)
addiu a2,a2,0x4d34
jalr t9
_addiu a0,a0,0x4d14
lw v0,0x3c(sp)
sra v0,v0,0x2
sw v0,0x48(sp)
lw v0,0xe8(sp)
sll v0,v0,0x3
sw v0,0x54(sp)
or s8,v0,zero
lw v0,-0x7fc8(gp)
li s3,0x4
lw a0,0x60(sp)
or a3,s8,zero
lw s6,0x40(sp)
lw s5,0x48(sp)
addiu t9,v0,0x1610
addiu v1,a0,-0x8
lw s7,-0x4(a0)
or a0,s6,zero
or a2,v1,zero
sw v1,0x68(sp)
or a1,s5,zero
sw t9,0x5c(sp)
sw s1,0x18(sp)
or s2,v1,zero
sw s3,0x14(sp)
bal 0x00041610
_sw s0,0x10(sp)
addiu a0,s6,0x8
lw t9,0x5c(sp)
or a2,s2,zero
sw s1,0x18(sp)
or a3,s8,zero
sw s3,0x14(sp)
or a1,s5,zero
sw s0,0x10(sp)
jalr t9
_addiu s2,s6,0x4
addiu v0,s6,0xc
lw gp,0x30(sp)
blez s5,0x00045b90
_sw v0,0x6c(sp)
sll v0,s5,0x3
lw s8,-0x7fc8(gp)
sll s3,s0,0x2
sw s4,0x74(sp)
sw v0,0x70(sp)
addu v0,s7,v0
addu s5,s1,s3
sw s2,0x80(sp)
sw v0,0x64(sp)
addiu v0,s8,0x790
or s4,s7,zero
b 0x00045678
_sw v0,0x38(sp)
lw s7,0x0(s6)
or a3,s0,zero
lw t0,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s2,s7,s3
or a1,s7,zero
or a0,s7,zero
lw v0,0x0(s2)
jalr t9
_addu s8,v0,t0
addu v0,s8,v0
addiu a0,v0,-0x1
movz a0,zero,v0
subu v0,v0,a0
sw v0,0x0(s2)
lw v0,0x0(s7)
subu a1,v0,a0
sltu a0,v0,a0
bne a0,zero,0x0004572c
_sw a1,0x0(s7)
lw v0,0x64(sp)
addiu s4,s4,0x8
beq s4,v0,0x0004575c
_addiu s6,s6,0x10
lw v0,0x50(sp)
or a3,s0,zero
lw a2,0x0(s4)
or a0,s1,zero
lw a1,0x8(s6)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a2,s1,zero
lw gp,0x30(sp)
or a3,s0,zero
lw a1,0x0(s6)
lw s2,0x8(s6)
lw s8,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s3
or a0,s2,zero
jalr t9
_lw s7,0x0(v0)
addu a2,s2,s3
addu v0,s8,v0
lw gp,0x30(sp)
subu a1,s7,v0
subu a0,v0,s7
sra v0,a1,0x1f
and v0,v0,a0
addu a1,a1,v0
sw a1,0x0(a2)
lw a0,0x0(s2)
addu a0,v0,a0
sltu v0,a0,v0
beq v0,zero,0x00045614
_sw a0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
bne v0,zero,0x00045614
_sw v0,0x0(s2)
addiu s2,s2,0x4
lw v0,0x0(s2)
addiu v0,v0,0x1
beq v0,zero,0x000456fc
_sw v0,0x0(s2)
b 0x00045618
_lw s7,0x0(s6)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x00045668
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x0004572c
_sw v1,0x0(s7)
b 0x0004566c
_lw v0,0x64(sp)
lw v0,0x60(sp)
li s7,0x4
lw s2,0x80(sp)
lw s8,0x48(sp)
lw a3,0x54(sp)
lw a2,0x68(sp)
or a0,s2,zero
lw t9,0x5c(sp)
or a1,s8,zero
lw s6,-0x4(v0)
lw s4,0x74(sp)
sw s1,0x18(sp)
sw s7,0x14(sp)
jalr t9
_sw s0,0x10(sp)
or a1,s8,zero
lw a3,0x54(sp)
lw a2,0x68(sp)
lw a0,0x6c(sp)
lw t9,0x5c(sp)
sw s1,0x18(sp)
sw s7,0x14(sp)
jalr t9
_sw s0,0x10(sp)
lw v0,0x70(sp)
sw s4,0x54(sp)
or s4,s6,zero
addu v0,s6,v0
or s6,s2,zero
b 0x00045840
_sw v0,0x48(sp)
lw s7,0x0(s6)
or a3,s0,zero
lw v1,0x0(s5)
or a2,s1,zero
lw t9,-0x7d0c(gp)
addu s2,s7,s3
or a0,s7,zero
or a1,s7,zero
lw v0,0x0(s2)
jalr t9
_addu s8,v0,v1
lw gp,0x30(sp)
addu v0,s8,v0
addiu v1,v0,-0x1
movz v1,zero,v0
subu v0,v0,v1
sw v0,0x0(s2)
lw v0,0x0(s7)
subu a0,v0,v1
sltu v1,v0,v1
bne v1,zero,0x000458f4
_sw a0,0x0(s7)
lw v0,0x48(sp)
addiu s4,s4,0x8
beq s4,v0,0x00045924
_addiu s6,s6,0x10
lw v0,0x50(sp)
or a3,s0,zero
lw a2,0x0(s4)
or a0,s1,zero
lw a1,0x8(s6)
lw t9,0x38(sp)
jalr t9
_mul a2,v0,a2
or a3,s0,zero
lw gp,0x30(sp)
or a2,s1,zero
lw a1,0x0(s6)
lw s7,0x8(s6)
lw s8,0x0(s5)
lw t9,-0x7b2c(gp)
addu v0,a1,s3
or a0,s7,zero
jalr t9
_lw s2,0x0(v0)
addu a1,s7,s3
addu v1,s8,v0
lw gp,0x30(sp)
subu a0,s2,v1
subu v1,v1,s2
sra v0,a0,0x1f
and v0,v0,v1
addu a0,a0,v0
sw a0,0x0(a1)
lw v1,0x0(s7)
addu v1,v0,v1
sltu v0,v1,v0
beq v0,zero,0x000457d8
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v0,v0,0x1
bne v0,zero,0x000457d8
_sw v0,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v0,v0,0x1
beq v0,zero,0x000458c4
_sw v0,0x0(s7)
b 0x000457dc
_lw s7,0x0(s6)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
bne v0,zero,0x00045830
_sw v1,0x0(s7)
addiu s7,s7,0x4
lw v0,0x0(s7)
addiu v1,v0,-0x1
beq v0,zero,0x000458f4
_sw v1,0x0(s7)
b 0x00045834
_lw v0,0x48(sp)
lw s4,0x54(sp)
lw v0,0x4c(sp)
blez v0,0x000446c0
_lw s8,-0x7fc8(gp)
sll s3,s0,0x2
addu s5,s1,s3
addiu v0,s8,0x790
b 0x000442e8
_sw v0,0x38(sp)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
bne v0,zero,0x00044354
_sw v1,0x0(s6)
addiu s6,s6,0x4
lw v0,0x0(s6)
addiu v1,v0,-0x1
beq v0,zero,0x00045948
_sw v1,0x0(s6)
b 0x00044358
_lw v0,0x4c(sp)
lw v0,0x60(sp)
lw v0,0x0(v0)
b 0x00042a54
_sw zero,0x0(v0)
lw v0,0xf4(sp)
bne v0,zero,0x000427e4
_li v0,0x1
lw v0,0x60(sp)
lw s8,0x54(sp)
b 0x0004555c
_lw s4,0x0(v0)
b 0x00044548
_or v0,s1,zero
addu s6,s1,s2
b 0x00044ca0
_or v0,s1,zero
or v0,s1,zero
b 0x00044ad8
_sw a2,0x0(v0)
or s2,zero,zero
b 0x00042324
_or v0,s1,zero
or v0,zero,zero
b 0x00044c5c
_sw v0,0x0(a1)
addu s5,s1,s2
b 0x0004417c
_or v0,s1,zero
or v0,s1,zero
b 0x00043fc0
_sw a2,0x0(v0)
b 0x000425b8
_li v1,0x1
b 0x00042400
_li v1,0x1
b 0x00044d70
_li v1,0x1
or v0,zero,zero
b 0x0004533c
_sw v0,0x0(s2)
b 0x0004249c
_or v0,zero,zero
or v0,zero,zero
b 0x000448f0
_sw v0,0x0(a1)
addu s5,s1,s2
b 0x000424e4
_or v0,s1,zero
b 0x00042328
_li s2,-0x4
b 0x000424e8
_addu s5,s1,s2
b 0x00044ca4
_addu s6,s1,s2
b 0x0004424c
_li v1,0x1
li v1,0x1
b 0x000440a0
_sw v1,0x0(a3)
b 0x00044180
_addu s5,s1,s2
or v0,zero,zero
b 0x00044138
_sw v0,0x0(a1)
or v0,zero,zero
b 0x000442e8
_sw v0,0x0(s2)
lw v0,0x44(sp)
lw a3,0x68(sp)
lw s6,0x70(sp)
addiu s4,v0,0x4
lw v0,0x60(sp)
lw t9,0x5c(sp)
b 0x00044f40
_lw s7,-0x4(v0)
lw s8,0x68(sp)
or a0,s2,zero
lw s7,0x6c(sp)
lw s5,0x70(sp)
lw t9,0x5c(sp)
or a3,s8,zero
or a2,s7,zero
sw s1,0x18(sp)
or a1,s5,zero
sw s4,0x14(sp)
jalr t9
_sw s0,0x10(sp)
or a3,s8,zero
lw a0,0x74(sp)
or a2,s7,zero
lw t9,0x5c(sp)
or a1,s5,zero
sw s1,0x18(sp)
sw s4,0x14(sp)
jalr t9
_sw s0,0x10(sp)
b 0x000448e0
_lw gp,0x30(sp)
lw s8,0x6c(sp)
or a0,s2,zero
lw s6,0x70(sp)
lw a3,0x68(sp)
lw t9,0x5c(sp)
or a2,s8,zero
or a1,s6,zero
sw s1,0x18(sp)
sw s5,0x14(sp)
jalr t9
_sw s0,0x10(sp)
or a2,s8,zero
lw a3,0x68(sp)
or a1,s6,zero
lw a0,0x74(sp)
lw t9,0x5c(sp)
sw s1,0x18(sp)
sw s5,0x14(sp)
jalr t9
_sw s0,0x10(sp)
b 0x00045320
_lw gp,0x30(sp)
addiu v0,a0,-0x4
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00043f0c
_sw a0,0x0(v0)
lw a0,0xcc(sp)
li v1,0x1
bne a0,v1,0x00043f0c
_nop
lw v1,0x4(v0)
addiu v1,v1,-0x1
b 0x00043f0c
_sw v1,0x4(v0)
lw s7,0x54(sp)
or a0,s2,zero
lw s6,0x68(sp)
lw s5,0x48(sp)
lw t9,0x5c(sp)
or a3,s7,zero
or a2,s6,zero
sw s1,0x18(sp)
or a1,s5,zero
sw s3,0x14(sp)
jalr t9
_sw s0,0x10(sp)
or a3,s7,zero
lw a0,0x6c(sp)
or a2,s6,zero
lw t9,0x5c(sp)
or a1,s5,zero
sw s1,0x18(sp)
sw s3,0x14(sp)
jalr t9
_sw s0,0x10(sp)
b 0x00045928
_lw gp,0x30(sp)
b 0x00044ebc
_li v1,0x3
lw t9,-0x7b70(gp)
jalr t9
_nop
li v0,0x1
lw s8,0x44(sp)
li s5,0x230
b 0x000427f4
_sw v0,0x5c(sp)
(translation_unit "uint * FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)\n\n{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}\n\n" (function_definition "uint * FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)\n\n{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" * (function_declarator "FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "uint *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "int param_12" primitive_type identifier) )))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int *piVar29;" primitive_type (pointer_declarator "*piVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int *piVar33;" primitive_type (pointer_declarator "*piVar33" * identifier) ;) (declaration "code *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "uint *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "code *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (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 "iVar23 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar23 = 1 << (param_3 & 0x1f)" identifier = (binary_expression "1 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "local_70 = param_9 * 2;" (assignment_expression "local_70 = param_9 * 2" identifier = (binary_expression "param_9 * 2" identifier * number_literal)) ;) (expression_statement "iVar20 = iVar23 >> 2;" (assignment_expression "iVar20 = iVar23 >> 2" identifier = (binary_expression "iVar23 >> 2" identifier >> number_literal)) ;) (expression_statement "local_84 = param_4;" (assignment_expression "local_84 = param_4" identifier = identifier) ;) (if_statement "if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = -4;\n    }" { (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" else (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" { (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31)" (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 "(puVar25,puVar25,param_4[1],iVar31)" ( identifier , identifier , (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" (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 "(param_4[1],param_11,param_4[1],iVar31)" ( (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042730;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_00042730;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00044428;" goto statement_identifier ;) })) (labeled_statement "LAB_00042730:\n        uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00044428:\n        uVar27 = 1;\n      }" else (compound_statement "{\nLAB_00044428:\n        uVar27 = 1;\n      }" { (labeled_statement "LAB_00044428:\n        uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" { (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000427cc;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_000427cc;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_000444cc;" goto statement_identifier ;) })) (labeled_statement "LAB_000427cc:\n        iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" else (compound_statement "{\nLAB_000444cc:\n        iVar6 = 0;\n      }" { (labeled_statement "LAB_000444cc:\n        iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (param_12 != 0) goto LAB_000427e4;" if (parenthesized_expression "(param_12 != 0)" ( (binary_expression "param_12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" { (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31)" (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 "(puVar25,puVar25,param_5[1],iVar31)" ( identifier , identifier , (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" (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 "(param_5[1],param_11,param_5[1],iVar31)" ( (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004461c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_0004461c;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000446dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0004461c:\n        uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" else (compound_statement "{\nLAB_000446dc:\n        uVar27 = 1;\n      }" { (labeled_statement "LAB_000446dc:\n        uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 == 0) goto LAB_000446c4;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000446c4;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" { (labeled_statement "LAB_000446b8:\n        iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000446bc;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000446b8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (if_statement "if (param_7 == puVar5) goto LAB_000446b8;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;" statement_identifier : (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;)) (goto_statement "goto LAB_000446c4;" goto statement_identifier ;) })) (expression_statement "local_68 = (int *)(param_10 + param_3 * 4);" (assignment_expression "local_68 = (int *)(param_10 + param_3 * 4)" identifier = (cast_expression "(int *)(param_10 + param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + param_3 * 4)" ( (binary_expression "param_10 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) ;) (expression_statement "local_7c = iVar23 >> 1;" (assignment_expression "local_7c = iVar23 >> 1" identifier = (binary_expression "iVar23 >> 1" identifier >> number_literal)) ;) (expression_statement "local_78 = param_9 * 4;" (assignment_expression "local_78 = param_9 * 4" identifier = (binary_expression "param_9 * 4" identifier * number_literal)) ;) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (if_statement "if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" if (parenthesized_expression "(local_7c == 2)" ( (binary_expression "local_7c == 2" identifier == number_literal) )) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = -4;\n    }" { (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" else (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" { (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31)" (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 "(puVar25,puVar25,param_4[2],iVar31)" ( identifier , identifier , (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" (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 "(param_4[2],param_11,param_4[2],iVar31)" ( (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" if (parenthesized_expression "(1 < *puVar17)" ( (binary_expression "1 < *puVar17" number_literal < (pointer_expression "*puVar17" * identifier)) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" identifier = (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" * identifier) - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" { (labeled_statement "LAB_0004355c:\n          *puVar17 = 0;" statement_identifier : (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043564;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004355c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            }" { (if_statement "if (param_7 == puVar5) goto LAB_0004355c;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" statement_identifier : (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" { (expression_statement "puVar25 = (uint *)param_4[2];" (assignment_expression "puVar25 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" { (labeled_statement "LAB_000435f8:\n          *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043604;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000435f8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            }" { (if_statement "if (param_7 == puVar17) goto LAB_000435f8;" if (parenthesized_expression "(param_7 == puVar17)" ( (binary_expression "param_7 == puVar17" identifier == identifier) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_00043604:\n    puVar17 = (uint *)param_4[1];" statement_identifier : (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" { (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31)" (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 "(puVar17,puVar17,param_4[3],iVar31)" ( identifier , identifier , (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" (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 "(param_4[3],param_11,param_4[3],iVar31)" ( (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = (uint *)((int)puVar17 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)puVar17 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar17 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar30)" ( (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" if (parenthesized_expression "(1 < *puVar5)" ( (binary_expression "1 < *puVar5" number_literal < (pointer_expression "*puVar5" * identifier)) )) (compound_statement "{\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" { (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "uVar27 = *puVar5 - 1;" (assignment_expression "uVar27 = *puVar5 - 1" identifier = (binary_expression "*puVar5 - 1" (pointer_expression "*puVar5" * identifier) - number_literal)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" { (labeled_statement "LAB_00043714:\n          *puVar5 = 0;" statement_identifier : (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004371c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043714;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00043714;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" statement_identifier : (if_statement "if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" { (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar17 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar17 + iVar30)" identifier = (cast_expression "(int *)((int)puVar17 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar30)" ( (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar6;" (assignment_expression "uVar27 = *puVar17 - iVar6" identifier = (binary_expression "*puVar17 - iVar6" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" { (labeled_statement "LAB_000437ac:\n          *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000437b8;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000437ac;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000437ac;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) }) (else_clause "else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" else (compound_statement "{\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" { (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = param_9 * 8;" (assignment_expression "iVar6 = param_9 * 8" identifier = (binary_expression "param_9 * 8" identifier * number_literal)) ;) (expression_statement "iVar30 = iVar23 >> 3;" (assignment_expression "iVar30 = iVar23 >> 3" identifier = (binary_expression "iVar23 >> 3" identifier >> number_literal)) ;) (if_statement "if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" if (parenthesized_expression "(iVar20 == 2)" ( (binary_expression "iVar20 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar31 = -4;\n      }" { (expression_statement "iVar31 = -4;" (assignment_expression "iVar31 = -4" identifier = number_literal) ;) }) (else_clause "else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" else (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar31 = 0;\n          puVar17 = param_11;\n        }" { (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" identifier = identifier) ;) }) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" else (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" { (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) }))) (expression_statement "iVar32 = (int)param_7 + 1;" (assignment_expression "iVar32 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32)" (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 "(puVar25,puVar25,param_4[4],iVar32)" ( identifier , identifier , (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" (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 "(param_4[4],param_11,param_4[4],iVar32)" ( (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000423fc;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_000423fc;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459fc;" goto statement_identifier ;) })) (labeled_statement "LAB_000423fc:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_000459fc:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_000459fc:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" { (expression_statement "puVar25 = (uint *)param_4[4];" (assignment_expression "puVar25 = (uint *)param_4[4]" identifier = (cast_expression "(uint *)param_4[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[4]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = *(int *)((int)puVar25 + iVar31);" (assignment_expression "iVar21 = *(int *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar31)" * (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar21;" (assignment_expression "uVar27 = *puVar25 - iVar21" identifier = (binary_expression "*puVar25 - iVar21" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar21)" ( (binary_expression "uVar27 < (uint)-iVar21" identifier < (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042498;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_00042498;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a18;" goto statement_identifier ;) })) (labeled_statement "LAB_00042498:\n          iVar21 = 1;" statement_identifier : (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" else (compound_statement "{\nLAB_00045a18:\n          iVar21 = 0;\n        }" { (labeled_statement "LAB_00045a18:\n          iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar25 + iVar31) = iVar21;" (assignment_expression "*(int *)((int)puVar25 + iVar31) = iVar21" (pointer_expression "*(int *)((int)puVar25 + iVar31)" * (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" { (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32)" (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 "(puVar17,puVar17,param_4[6],iVar32)" ( identifier , identifier , (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" (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 "(param_4[6],param_11,param_4[6],iVar32)" ( (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000425b4;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000425b4;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459f4;" goto statement_identifier ;) })) (labeled_statement "LAB_000425b4:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_000459f4:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_000459f4:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar17 = (uint *)param_4[6];" (assignment_expression "puVar17 = (uint *)param_4[6]" identifier = (cast_expression "(uint *)param_4[6]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" identifier = (cast_expression "(int *)((int)puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar21;" (assignment_expression "uVar27 = *puVar17 - iVar21" identifier = (binary_expression "*puVar17 - iVar21" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar21)" ( (binary_expression "uVar27 < (uint)-iVar21" identifier < (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" { (labeled_statement "LAB_0004264c:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004264c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0004264c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000448f4:\n      iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);" do (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" { (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar28" identifier * (pointer_expression "*piVar28" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar12 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar12 = *(int *)(*puVar17 + iVar31)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar31)" * (cast_expression "(int *)(*puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar31)" ( (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar12 - (uVar27 + iVar32);" (assignment_expression "iVar11 = iVar12 - (uVar27 + iVar32)" identifier = (binary_expression "iVar12 - (uVar27 + iVar32)" identifier - (parenthesized_expression "(uVar27 + iVar32)" ( (binary_expression "uVar27 + iVar32" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;" (assignment_expression "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" identifier = (binary_expression "iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar32) - iVar12" (parenthesized_expression "(uVar27 + iVar32)" ( (binary_expression "uVar27 + iVar32" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" * (cast_expression "(uint *)((int)puVar5 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar11 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" { (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00044910;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044910;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" else (compound_statement "{\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" { (labeled_statement "LAB_00044910:\n          puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar32 = *(int *)((int)puVar5 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar32 + uVar27 + iVar11;" (assignment_expression "iVar11 = iVar32 + uVar27 + iVar11" identifier = (binary_expression "iVar32 + uVar27 + iVar11" (binary_expression "iVar32 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar11 - 1;" (assignment_expression "uVar27 = iVar11 - 1" identifier = (binary_expression "iVar11 - 1" identifier - number_literal)) ;) (if_statement "if (iVar11 == 0) {\n          uVar27 = 0;\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar27 = 0;\n        }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar11 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" { (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 < iVar20)" ( (binary_expression "iVar21 < iVar20" identifier < identifier) )) ;) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" if (parenthesized_expression "(iVar20 != 2)" ( (binary_expression "iVar20 != 2" identifier != number_literal) )) (compound_statement "{\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" { (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00044f40;" goto statement_identifier ;) })) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_11 = uVar27;\n        }" { (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" else (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" { (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(uint *)((int)param_11 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar31)" * (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar30 = (int)param_7 + 1;" (assignment_expression "iVar30 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30)" (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 "(puVar25,puVar25,param_4[5],iVar30)" ( identifier , identifier , (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" (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 "(param_4[5],param_11,param_4[5],iVar30)" ( (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044bb8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_00044bb8;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00044e0c;" goto statement_identifier ;) })) (labeled_statement "LAB_00044bb8:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_00044e0c:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_00044e0c:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar25 = (uint *)param_4[5];" (assignment_expression "puVar25 = (uint *)param_4[5]" identifier = (cast_expression "(uint *)param_4[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[5]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar25 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar25 + iVar31)" identifier = (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar24;" (assignment_expression "iVar6 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" { (labeled_statement "LAB_00044c54:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00044c60;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044c54;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              }" { (if_statement "if (param_7 == puVar17) goto LAB_00044c54;" if (parenthesized_expression "(param_7 == puVar17)" ( (binary_expression "param_7 == puVar17" identifier == identifier) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00044c60:\n      puVar17 = (uint *)param_4[3];" statement_identifier : (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" { (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30)" (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 "(puVar17,puVar17,param_4[7],iVar30)" ( identifier , identifier , (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" (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 "(param_4[7],param_11,param_4[7],iVar30)" ( (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - uVar26;" (assignment_expression "*puVar17 = uVar27 - uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar27 < uVar26)" ( (binary_expression "uVar27 < uVar26" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044d6c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044d6c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a04;" goto statement_identifier ;) })) (labeled_statement "LAB_00044d6c:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_00045a04:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_00045a04:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar17 = (uint *)param_4[7];" (assignment_expression "puVar17 = (uint *)param_4[7]" identifier = (cast_expression "(uint *)param_4[7]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" identifier = (cast_expression "(int *)((int)puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar30 = *piVar24;" (assignment_expression "iVar30 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar30;" (assignment_expression "uVar27 = *puVar17 - iVar30" identifier = (binary_expression "*puVar17 - iVar30" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar30)" ( (binary_expression "uVar27 < (uint)-iVar30" identifier < (binary_expression "(uint)-iVar30" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" { (labeled_statement "LAB_00044e00:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044e00;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044e00;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004533c:\n      puVar17 = param_4 + 1;" statement_identifier : (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;)) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);" do (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" { (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar28" identifier * (pointer_expression "*piVar28" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar31)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar31)" * (cast_expression "(int *)(*puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar31)" ( (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar6);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar6)" identifier = (binary_expression "iVar32 - (uVar27 + iVar6)" identifier - (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar6) - iVar32" (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" * (cast_expression "(uint *)((int)puVar5 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" { (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004534c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004534c;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" else (compound_statement "{\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" { (labeled_statement "LAB_0004534c:\n          puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar6 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar6 = *(int *)((int)puVar5 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar6 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar6 + uVar27 + iVar21" identifier = (binary_expression "iVar6 + uVar27 + iVar21" (binary_expression "iVar6 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n          uVar27 = 0;\n        }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar27 = 0;\n        }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" { (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 < iVar20)" ( (binary_expression "iVar30 < iVar20" identifier < identifier) )) ;) }) (else_clause "else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" else (compound_statement "{\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" { (expression_statement "piVar24 = local_68 + -3;" (assignment_expression "piVar24 = local_68 + -3" identifier = (binary_expression "local_68 + -3" identifier + number_literal)) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" identifier = (binary_expression "param_9 << 4" identifier << number_literal)) ;) (expression_statement "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" identifier (argument_list "(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_4 + 2;" (assignment_expression "puVar25 = param_4 + 2" identifier = (binary_expression "param_4 + 2" identifier + number_literal)) ;) (expression_statement "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 4" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }" { (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" else (compound_statement "{\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" { (expression_statement "piVar19 = piVar29 + iVar30 * 2;" (assignment_expression "piVar19 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar17[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" identifier = (cast_expression "(uint *)puVar17[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" identifier = (binary_expression "iVar11 - (uVar27 + iVar21)" identifier - (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" identifier = (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar32 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004333c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004333c;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_0004333c:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" identifier = (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" identifier = (binary_expression "puVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar19)" ( (binary_expression "piVar29 != piVar19" identifier != identifier) )) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar25[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" identifier = (cast_expression "(uint *)puVar25[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar21 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar21 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004478c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004478c;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_0004478c:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar31 = uVar27 + uVar26 + iVar31;" (assignment_expression "iVar31 = uVar27 + uVar26 + iVar31" identifier = (binary_expression "uVar27 + uVar26 + iVar31" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar31 - 1;" (assignment_expression "uVar27 = iVar31 - 1" identifier = (binary_expression "iVar31 - 1" identifier - number_literal)) ;) (if_statement "if (iVar31 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar31 == 0)" ( (binary_expression "iVar31 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar31 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" identifier = (binary_expression "puVar25 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) }))) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" { (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_00044f40:\n      local_5c = local_68 + -3;" statement_identifier : (expression_statement "local_5c = local_68 + -3;" (assignment_expression "local_5c = local_68 + -3" identifier = (binary_expression "local_68 + -3" identifier + number_literal)) ;)) (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" identifier = (binary_expression "param_9 << 4" identifier << number_literal)) ;) (expression_statement "piVar24 = (int *)local_68[-2];" (assignment_expression "piVar24 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 5" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_4 + 3;" (assignment_expression "puVar25 = param_4 + 3" identifier = (binary_expression "param_4 + 3" identifier + number_literal)) ;) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }" { (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" else (compound_statement "{\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" { (expression_statement "piVar29 = piVar24 + iVar30 * 2;" (assignment_expression "piVar29 = piVar24 + iVar30 * 2" identifier = (binary_expression "piVar24 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar17[4],iVar6 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" identifier = (cast_expression "(uint *)puVar17[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" identifier = (binary_expression "iVar11 - (uVar27 + iVar21)" identifier - (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" identifier = (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar32 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00044fe8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044fe8;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_00044fe8:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" identifier = (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" identifier = (binary_expression "puVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar25[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" identifier = (cast_expression "(uint *)puVar25[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar30);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar30)" identifier = (binary_expression "iVar21 - (uVar27 + iVar30)" identifier - (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" identifier = (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" (binary_expression "iVar31 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar30) - iVar21" (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000451c8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000451c8;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_000451c8:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" identifier = (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" identifier = (binary_expression "iVar30 - 1" identifier - number_literal)) ;) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar30 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" identifier = (binary_expression "puVar25 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar29)" ( (binary_expression "piVar24 != piVar29" identifier != identifier) )) ;) }))) (if_statement "if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" { (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) }))) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" if (parenthesized_expression "(local_7c < 1)" ( (binary_expression "local_7c < 1" identifier < number_literal) )) (compound_statement "{\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" { (if_statement "if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" { (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (goto_statement "goto LAB_0004555c;" goto statement_identifier ;) })) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;) })) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_000437b8:\n  iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);" do (compound_statement "{\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  }" { (expression_statement "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[1],local_70 * *piVar33,param_7)" ( identifier , (subscript_expression "puVar17[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[1];" (assignment_expression "puVar5 = (uint *)puVar17[1]" identifier = (cast_expression "(uint *)puVar17[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar30)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar30)" * (cast_expression "(int *)(*puVar17 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar30)" ( (binary_expression "*puVar17 + iVar30" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" * (cast_expression "(uint *)((int)puVar5 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }" { (do_statement "do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);" do (compound_statement "{\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000437d8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000437d8;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" else (compound_statement "{\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" { (labeled_statement "LAB_000437d8:\n      puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" identifier = (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n      uVar27 = 0;\n    }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar27 = 0;\n    }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" { (do_statement "do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);" do (compound_statement "{\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < local_7c)" ( (binary_expression "iVar6 < local_7c" identifier < identifier) )) ;) (if_statement "if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" if (parenthesized_expression "(param_12 != 0)" ( (binary_expression "param_12 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" { (labeled_statement "LAB_000427e4:\n    iVar30 = 0x230;" statement_identifier : (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" identifier = number_literal) ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000427f4;" goto statement_identifier ;) })) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (if_statement "if (local_7c != 2) goto LAB_0004555c;" if (parenthesized_expression "(local_7c != 2)" ( (binary_expression "local_7c != 2" identifier != number_literal) )) (goto_statement "goto LAB_0004555c;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_11 = uVar27;\n    }" { (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" else (compound_statement "{\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" { (do_statement "do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(uint *)((int)param_11 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar30)" * (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31)" (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 "(puVar25,puVar25,param_5[2],iVar31)" ( identifier , identifier , (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" (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 "(param_5[2],param_11,param_5[2],iVar31)" ( (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" if (parenthesized_expression "(1 < *puVar17)" ( (binary_expression "1 < *puVar17" number_literal < (pointer_expression "*puVar17" * identifier)) )) (compound_statement "{\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" identifier = (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" * identifier) - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" { (labeled_statement "LAB_00044098:\n        *puVar17 = 0;" statement_identifier : (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000440a0;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044098;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" { (if_statement "if (param_7 == puVar5) goto LAB_00044098;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" statement_identifier : (if_statement "if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" { (expression_statement "puVar25 = (uint *)param_5[2];" (assignment_expression "puVar25 = (uint *)param_5[2]" identifier = (cast_expression "(uint *)param_5[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" { (labeled_statement "LAB_00044130:\n        *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004413c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044130;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "bVar1 = param_7 == puVar17;" (assignment_expression "bVar1 = param_7 == puVar17" identifier = (binary_expression "param_7 == puVar17" identifier == identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044130;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_0004413c:\n  puVar25 = (uint *)param_5[1];" statement_identifier : (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" { (do_statement "do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar17 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31)" (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 "(puVar25,puVar25,param_5[3],iVar31)" ( identifier , identifier , (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" (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 "(param_5[3],param_11,param_5[3],iVar31)" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - uVar26;" (assignment_expression "*puVar25 = uVar27 - uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" if (parenthesized_expression "(uVar27 < uVar26)" ( (binary_expression "uVar27 < uVar26" identifier < identifier) )) (compound_statement "{\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }" { (if_statement "if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044248;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044248;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a50;" goto statement_identifier ;) })) (labeled_statement "LAB_00044248:\n      uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" else (compound_statement "{\nLAB_00045a50:\n      uVar27 = 1;\n    }" { (labeled_statement "LAB_00045a50:\n      uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 == 0) goto LAB_000442ec;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000442ec;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)param_5[3];" (assignment_expression "puVar25 = (uint *)param_5[3]" identifier = (cast_expression "(uint *)param_5[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" { (labeled_statement "LAB_000442e0:\n      *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000442ec;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000442e0;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);" do (compound_statement "{\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000442e0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) (labeled_statement "LAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" do (compound_statement "{\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (do_statement "do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);" do (compound_statement "{\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    }" { (expression_statement "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar25[1],local_70 * *piVar33,param_7)" ( identifier , (subscript_expression "puVar25[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar25[1];" (assignment_expression "puVar5 = (uint *)puVar25[1]" identifier = (cast_expression "(uint *)puVar25[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar25 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar25 + iVar30)" identifier = (pointer_expression "*(int *)(*puVar25 + iVar30)" * (cast_expression "(int *)(*puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + iVar30)" ( (binary_expression "*puVar25 + iVar30" (pointer_expression "*puVar25" * identifier) + identifier) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,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 "(puVar5,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" * (cast_expression "(uint *)((int)puVar5 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }" { (do_statement "do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);" do (compound_statement "{\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000442f4;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000442f4;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" else (compound_statement "{\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" { (labeled_statement "LAB_000442f4:\n        puVar5 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" identifier = (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n        uVar27 = 0;\n      }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar27 = 0;\n      }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" { (do_statement "do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);" do (compound_statement "{\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < local_7c)" ( (binary_expression "iVar6 < local_7c" identifier < identifier) )) ;) (labeled_statement "LAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" statement_identifier : (do_statement "do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" do (compound_statement "{\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (if_statement "if (local_84 == param_5) goto LAB_00045c00;" if (parenthesized_expression "(local_84 == param_5)" ( (binary_expression "local_84 == param_5" identifier == identifier) )) (goto_statement "goto LAB_00045c00;" goto statement_identifier ;)) (expression_statement "local_6c = (code *)0x0;" (assignment_expression "local_6c = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar30 = 0x270;" (assignment_expression "iVar30 = 0x270" identifier = number_literal) ;) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" identifier = identifier) ;) (labeled_statement "LAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" statement_identifier : (if_statement "if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" if (parenthesized_expression "((int)param_7 < iVar30)" ( (binary_expression "(int)param_7 < iVar30" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" { (expression_statement "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);" (assignment_expression "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" (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_30,(int)param_7 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(int)param_7 * 8" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (expression_statement "puVar17 = puVar25 + (int)param_7;" (assignment_expression "puVar17 = puVar25 + (int)param_7" identifier = (binary_expression "puVar25 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" if (parenthesized_expression "(0 < iVar23)" ( (binary_expression "0 < iVar23" number_literal < identifier) )) (compound_statement "{\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);" do (compound_statement "{\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          }" { (expression_statement "piVar33 = (int *)local_84[iVar30];" (assignment_expression "piVar33 = (int *)local_84[iVar30]" identifier = (cast_expression "(int *)local_84[iVar30]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_84[iVar30]" identifier [ identifier ]))) ;) (expression_statement "uVar27 = param_4[iVar30];" (assignment_expression "uVar27 = param_4[iVar30]" identifier = (subscript_expression "param_4[iVar30]" identifier [ identifier ])) ;) (if_statement "if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" if (parenthesized_expression "(local_84 == param_4)" ( (binary_expression "local_84 == param_4" identifier == identifier) )) (compound_statement "{\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }" { (expression_statement "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_0009d394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_0009d394" * (cast_expression "(code *)PTR___gmpn_sqr_0009d394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar25,piVar33,param_7)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" else (compound_statement "{\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" { (expression_statement "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_0009d364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_0009d364" * (cast_expression "(code *)PTR___gmpn_mul_n_0009d364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar25,uVar27,piVar33,param_7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "piVar24 = piVar33 + (int)param_7;" (assignment_expression "piVar24 = piVar33 + (int)param_7" identifier = (binary_expression "piVar33 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar28 = (int *)(uVar27 + (int)param_7 * 4);" (assignment_expression "piVar28 = (int *)(uVar27 + (int)param_7 * 4)" identifier = (cast_expression "(int *)(uVar27 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar27 + (int)param_7 * 4)" ( (binary_expression "uVar27 + (int)param_7 * 4" identifier + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (if_statement "if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(*piVar24 == 0)" ( (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" * identifier) == number_literal) )) (compound_statement "{\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" { (labeled_statement "LAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" statement_identifier : (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,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 "(puVar17,puVar17,piVar33,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "uVar27 = uVar27 + iVar6 + *piVar24;" (assignment_expression "uVar27 = uVar27 + iVar6 + *piVar24" identifier = (binary_expression "uVar27 + iVar6 + *piVar24" (binary_expression "uVar27 + iVar6" identifier + identifier) + (pointer_expression "*piVar24" * identifier))) ;) (goto_statement "goto LAB_00043d68;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" else (compound_statement "{\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" { (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,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 "(puVar17,puVar17,uVar27,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (*piVar28 != 0) goto LAB_00043d3c;" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (goto_statement "goto LAB_00043d3c;" goto statement_identifier ;)) (labeled_statement "LAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" statement_identifier : (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" if (parenthesized_expression "(((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0))" ( (binary_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" (parenthesized_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))))" ( (binary_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" (parenthesized_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1))" ( (binary_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)" (parenthesized_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27))" ( (binary_expression "(uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" ( (comma_expression "uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) , (comma_expression "*puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) , (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)param_7 << 1)" ( (binary_expression "1 < (int)param_7 << 1" number_literal < (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) )) && (parenthesized_expression "((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" ( (parenthesized_expression "(uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))" ( (comma_expression "uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) , (comma_expression "puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) , (binary_expression "uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) && (parenthesized_expression "((int)param_7 << 1 != 2)" ( (binary_expression "(int)param_7 << 1 != 2" (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != number_literal) ))))) )) ))) )) && (parenthesized_expression "(uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" ( (comma_expression "uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) , (comma_expression "puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) , (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" { (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);" do (compound_statement "{\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar25 + (int)param_7 * 2 == puVar5) break;" if (parenthesized_expression "(puVar25 + (int)param_7 * 2 == puVar5)" ( (binary_expression "puVar25 + (int)param_7 * 2 == puVar5" (binary_expression "puVar25 + (int)param_7 * 2" identifier + (binary_expression "(int)param_7 * 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);" (assignment_expression "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7)" identifier = (call_expression "(*pcVar14)(piVar33,puVar25,puVar17,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar33,puVar25,puVar17,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" if (parenthesized_expression "((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0))" ( (binary_expression "(iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" ( (comma_expression "iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) , (comma_expression "*piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) , (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_00043d00:\n              iVar6 = 0;\n            }" { (labeled_statement "LAB_00043d00:\n              iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" else (compound_statement "{\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" { (expression_statement "iVar6 = piVar33[1];" (assignment_expression "iVar6 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar6 + 1;" (assignment_expression "piVar33[1] = iVar6 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043ce4;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar33[2];" (assignment_expression "iVar6 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar6 + 1;" (assignment_expression "piVar33[2] = iVar6 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" { (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);" do (compound_statement "{\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" { (if_statement "if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" if (parenthesized_expression "(piVar24 == piVar33)" ( (binary_expression "piVar24 == piVar33" identifier == identifier) )) (compound_statement "{\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;) })) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00043d00;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043ce4:\n            *piVar24 = iVar6;" statement_identifier : (expression_statement "*piVar24 = iVar6;" (assignment_expression "*piVar24 = iVar6" (pointer_expression "*piVar24" * identifier) = identifier) ;)) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar23 != iVar30)" ( (binary_expression "iVar23 != iVar30" identifier != identifier) )) ;) })) (labeled_statement "LAB_00042c64:\n        iVar30 = (int)param_7 * 4;" statement_identifier : (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;)) (if_statement "if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 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 "()" ( ))) ;) })) (expression_statement "iVar6 = (int)param_7 + 1;" (assignment_expression "iVar6 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_7c = iVar6 * 4;" (assignment_expression "local_7c = iVar6 * 4" identifier = (binary_expression "iVar6 * 4" identifier * number_literal)) ;) (expression_statement "puVar17 = param_11 + iVar6;" (assignment_expression "puVar17 = param_11 + iVar6" identifier = (binary_expression "param_11 + iVar6" identifier + identifier)) ;) (expression_statement "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);" (call_expression "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11)" identifier (argument_list "(local_84,iVar23,local_70,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_LAB_0009d078;" (assignment_expression "puVar3 = PTR_LAB_0009d078" identifier = identifier) ;) (expression_statement "puVar5 = puVar17 + (int)param_7;" (assignment_expression "puVar5 = puVar17 + (int)param_7" identifier = (binary_expression "puVar17 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*param_5 = (uint)puVar17;" (assignment_expression "*param_5 = (uint)puVar17" (pointer_expression "*param_5" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" identifier (argument_list "(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" ( identifier , (pointer_expression "*local_84" * identifier) , (binary_expression "(int)param_7 * 0x40 - param_3" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , identifier ))) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" if (parenthesized_expression "(*puVar5 != 0)" ( (binary_expression "*puVar5 != 0" (pointer_expression "*puVar5" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" { (do_statement "do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) (if_statement "if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }" if (parenthesized_expression "(*puVar5 == 0)" ( (binary_expression "*puVar5 == 0" (pointer_expression "*puVar5" * identifier) == number_literal) )) (compound_statement "{\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }" { (if_statement "if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30)" (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 "(puVar17,0,iVar30)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) }) (else_clause "else {\n            *puVar5 = 0;\n          }" else (compound_statement "{\n            *puVar5 = 0;\n          }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) }))) })) (if_statement "if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" if (parenthesized_expression "(1 < iVar23)" ( (binary_expression "1 < iVar23" number_literal < identifier) )) (compound_statement "{\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" { (expression_statement "puVar5 = local_84 + 1;" (assignment_expression "puVar5 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);" (assignment_expression "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" identifier = (binary_expression "(int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - (parenthesized_expression "((iVar23 + -1) * param_9 + param_3)" ( (binary_expression "(iVar23 + -1) * param_9 + param_3" (binary_expression "(iVar23 + -1) * param_9" (parenthesized_expression "(iVar23 + -1)" ( (binary_expression "iVar23 + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));" (assignment_expression "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" identifier = (cast_expression "(uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + (4 << (param_3 & 0x1f)))" ( (binary_expression "(int)local_84 + (4 << (param_3 & 0x1f))" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (param_3 & 0x1f))" ( (binary_expression "4 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (do_statement "do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);" do (compound_statement "{\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "piVar24 = (int *)puVar5[-1];" (assignment_expression "piVar24 = (int *)puVar5[-1]" identifier = (cast_expression "(int *)puVar5[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar25 = (uint)piVar24;" (assignment_expression "*puVar25 = (uint)piVar24" (pointer_expression "*puVar25" * identifier) = (cast_expression "(uint)piVar24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "piVar28 = piVar24 + (int)param_7;" (assignment_expression "piVar28 = piVar24 + (int)param_7" identifier = (binary_expression "piVar24 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);" (call_expression "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7)" (parenthesized_expression "(*(code *)(puVar3 + 0x790))" ( (pointer_expression "*(code *)(puVar3 + 0x790)" * (cast_expression "(code *)(puVar3 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x790)" ( (binary_expression "puVar3 + 0x790" identifier + number_literal) )))) )) (argument_list "(piVar24,*puVar5,iVar31,param_7)" ( identifier , (pointer_expression "*puVar5" * identifier) , identifier , identifier ))) ;) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" identifier = identifier) ;) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" { (do_statement "do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);" do (compound_statement "{\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" if (parenthesized_expression "(*piVar28 == 0)" ( (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" * identifier) == number_literal) )) (compound_statement "{\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }" { (if_statement "if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30)" (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 "(piVar24,0,iVar30)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar28 = 0;\n              }" else (compound_statement "{\n                *piVar28 = 0;\n              }" { (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) })) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = iVar31 + param_9;" (assignment_expression "iVar31 = iVar31 + param_9" identifier = (binary_expression "iVar31 + param_9" identifier + identifier)) ;) (expression_statement "local_84 = param_11;" (assignment_expression "local_84 = param_11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar5)" ( (binary_expression "puVar17 != puVar5" identifier != identifier) )) ;) })) (expression_statement "local_80 = iVar23 - 1;" (assignment_expression "local_80 = iVar23 - 1" identifier = (binary_expression "iVar23 - 1" identifier - number_literal)) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4)" (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 "(param_11,0,iVar6 * 4)" ( identifier , number_literal , (binary_expression "iVar6 * 4" identifier * number_literal) ))) ;) })) (expression_statement "iVar21 = local_80 * param_8;" (assignment_expression "iVar21 = local_80 * param_8" identifier = (binary_expression "local_80 * param_8" identifier * identifier)) ;) (expression_statement "iVar31 = param_2 * 2;" (assignment_expression "iVar31 = param_2 * 2" identifier = (binary_expression "param_2 * 2" identifier * number_literal)) ;) (expression_statement "puVar25 = (uint *)((int)param_7 + iVar21);" (assignment_expression "puVar25 = (uint *)((int)param_7 + iVar21)" identifier = (cast_expression "(uint *)((int)param_7 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_7 + iVar21)" ( (binary_expression "(int)param_7 + iVar21" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_78 = (int)puVar25 + 1;" (assignment_expression "local_78 = (int)puVar25 + 1" identifier = (binary_expression "(int)puVar25 + 1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" if (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar17 = (uint *)0xffffffff;\n        }" { (expression_statement "puVar17 = (uint *)0xffffffff;" (assignment_expression "puVar17 = (uint *)0xffffffff" identifier = (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" else (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4)" (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 "(param_6,0,local_78 * 4)" ( identifier , number_literal , (binary_expression "local_78 * 4" identifier * number_literal) ))) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) }))) (if_statement "if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(-1 < (int)local_80)" ( (binary_expression "-1 < (int)local_80" number_literal < (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_70 = (iVar21 + 1) - (int)puVar17;" (assignment_expression "local_70 = (iVar21 + 1) - (int)puVar17" identifier = (binary_expression "(iVar21 + 1) - (int)puVar17" (parenthesized_expression "(iVar21 + 1)" ( (binary_expression "iVar21 + 1" identifier + number_literal) )) - (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar24 = param_6 + iVar21;" (assignment_expression "piVar24 = param_6 + iVar21" identifier = (binary_expression "param_6 + iVar21" identifier + identifier)) ;) (expression_statement "piVar28 = param_6 + iVar6 + iVar21 + 1;" (assignment_expression "piVar28 = param_6 + iVar6 + iVar21 + 1" identifier = (binary_expression "param_6 + iVar6 + iVar21 + 1" (binary_expression "param_6 + iVar6 + iVar21" (binary_expression "param_6 + iVar6" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "piVar33 = param_6 + (int)puVar17;" (assignment_expression "piVar33 = param_6 + (int)puVar17" identifier = (binary_expression "param_6 + (int)puVar17" identifier + (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_84 = param_11 + (int)param_7;" (assignment_expression "local_84 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar17 = param_7;" (assignment_expression "puVar17 = param_7" identifier = identifier) ;) (expression_statement "uVar27 = local_80;" (assignment_expression "uVar27 = local_80" identifier = identifier) ;) (do_statement "do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);" do (compound_statement "{\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          }" { (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" (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 "(piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" ( identifier , identifier , (subscript_expression "param_5[iVar23 - uVar27 & local_80]" identifier [ (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" identifier - identifier) & identifier) ]) , identifier )))) ;) (if_statement "if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))" ( (binary_expression "(iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" ( (comma_expression "iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "iVar21 = piVar28[-1]" identifier = (subscript_expression "piVar28[-1]" identifier [ number_literal ])) , (comma_expression "piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "piVar28[-1] = iVar21 + 1" (subscript_expression "piVar28[-1]" identifier [ number_literal ]) = (binary_expression "iVar21 + 1" identifier + number_literal)) , (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" { (expression_statement "iVar21 = (int)puVar17 - (int)param_7;" (assignment_expression "iVar21 = (int)puVar17 - (int)param_7" identifier = (binary_expression "(int)puVar17 - (int)param_7" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }" { (labeled_statement "LAB_00042fe4:\n                local_7c = local_7c + 1;" statement_identifier : (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" else (compound_statement "{\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" { (expression_statement "iVar32 = *piVar28;" (assignment_expression "iVar32 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "*piVar28 = iVar32 + 1;" (assignment_expression "*piVar28 = iVar32 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar32 + 1 == 0)" ( (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" { (if_statement "if (iVar21 == 2) goto LAB_00042fe4;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar28[1];" (assignment_expression "iVar32 = piVar28[1]" identifier = (subscript_expression "piVar28[1]" identifier [ number_literal ])) ;) (expression_statement "piVar28[1] = iVar32 + 1;" (assignment_expression "piVar28[1] = iVar32 + 1" (subscript_expression "piVar28[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar32 + 1 == 0)" ( (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar28 + 2;" (assignment_expression "piVar29 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (do_statement "do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);" do (compound_statement "{\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    }" { (if_statement "if (iVar21 == iVar32) goto LAB_00042fe4;" if (parenthesized_expression "(iVar21 == iVar32)" ( (binary_expression "iVar21 == iVar32" identifier == identifier) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "*piVar29 = iVar11 + 1;" (assignment_expression "*piVar29 = iVar11 + 1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 + 1 == 0)" ( (binary_expression "iVar11 + 1 == 0" (binary_expression "iVar11 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) (expression_statement "uVar26 = param_5[iVar23 - uVar27 & local_80];" (assignment_expression "uVar26 = param_5[iVar23 - uVar27 & local_80]" identifier = (subscript_expression "param_5[iVar23 - uVar27 & local_80]" identifier [ (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" identifier - identifier) & identifier) ])) ;) (expression_statement "param_11[param_8 * 2] = uVar27 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar27 + 1" (subscript_expression "param_11[param_8 * 2]" identifier [ (binary_expression "param_8 * 2" identifier * number_literal) ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)(uVar26 + iVar30);" (assignment_expression "puVar18 = (uint *)(uVar26 + iVar30)" identifier = (cast_expression "(uint *)(uVar26 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar26 + iVar30)" ( (binary_expression "uVar26 + iVar30" identifier + identifier) )))) ;) (expression_statement "iVar21 = iVar6;" (assignment_expression "iVar21 = iVar6" identifier = identifier) ;) (expression_statement "puVar5 = local_84;" (assignment_expression "puVar5 = local_84" identifier = identifier) ;) (do_statement "do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);" do (compound_statement "{\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            }" { (expression_statement "iVar21 = iVar21 + -1;" (assignment_expression "iVar21 = iVar21 + -1" identifier = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 < 0) goto LAB_00043030;" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00043030;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uVar7 = *puVar5;" (assignment_expression "uVar7 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == uVar7)" ( (binary_expression "uVar26 == uVar7" identifier == identifier) )) ;) (if_statement "if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(uVar7 < uVar26)" ( (binary_expression "uVar7 < uVar26" identifier < identifier) )) (compound_statement "{\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" { (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "*piVar24 = iVar21 + -1;" (assignment_expression "*piVar24 = iVar21 + -1" (pointer_expression "*piVar24" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" { (expression_statement "iVar21 = (int)puVar17 + 1;" (assignment_expression "iVar21 = (int)puVar17 + 1" identifier = (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }" { (labeled_statement "LAB_00043990:\n                  local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" else (compound_statement "{\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" { (expression_statement "iVar32 = piVar24[1];" (assignment_expression "iVar32 = piVar24[1]" identifier = (subscript_expression "piVar24[1]" identifier [ number_literal ])) ;) (expression_statement "piVar24[1] = iVar32 + -1;" (assignment_expression "piVar24[1] = iVar32 + -1" (subscript_expression "piVar24[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" { (if_statement "if (iVar21 == 2) goto LAB_00043990;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar24[2];" (assignment_expression "iVar32 = piVar24[2]" identifier = (subscript_expression "piVar24[2]" identifier [ number_literal ])) ;) (expression_statement "piVar24[2] = iVar32 + -1;" (assignment_expression "piVar24[2] = iVar32 + -1" (subscript_expression "piVar24[2]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar24 + 3;" (assignment_expression "piVar29 = piVar24 + 3" identifier = (binary_expression "piVar24 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" do (compound_statement "{\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" { (expression_statement "bVar1 = iVar21 == iVar32;" (assignment_expression "bVar1 = iVar21 == iVar32" identifier = (binary_expression "iVar21 == iVar32" identifier == identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043990;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) })) }))) })) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" { (expression_statement "iVar21 = local_70 + (int)puVar17;" (assignment_expression "iVar21 = local_70 + (int)puVar17" identifier = (binary_expression "local_70 + (int)puVar17" identifier + (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }" { (labeled_statement "LAB_00043a18:\n                  local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" else (compound_statement "{\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" { (expression_statement "iVar32 = piVar33[1];" (assignment_expression "iVar32 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar32 + -1;" (assignment_expression "piVar33[1] = iVar32 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" { (if_statement "if (iVar21 == 2) goto LAB_00043a18;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar33[2];" (assignment_expression "iVar32 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar32 + -1;" (assignment_expression "piVar33[2] = iVar32 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar33 + 3;" (assignment_expression "piVar29 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" do (compound_statement "{\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" { (if_statement "if (iVar21 == iVar32) goto LAB_00043a18;" if (parenthesized_expression "(iVar21 == iVar32)" ( (binary_expression "iVar21 == iVar32" identifier == identifier) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) })) }))) })) })) (labeled_statement "LAB_00043030:\n            uVar27 = uVar27 - 1;" statement_identifier : (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;)) (expression_statement "piVar24 = piVar24 + -param_8;" (assignment_expression "piVar24 = piVar24 + -param_8" identifier = (binary_expression "piVar24 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar28 = piVar28 + -param_8;" (assignment_expression "piVar28 = piVar28 + -param_8" identifier = (binary_expression "piVar28 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + param_8);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + param_8)" identifier = (cast_expression "(uint *)((int)puVar17 + param_8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + param_8)" ( (binary_expression "(int)puVar17 + param_8" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar33 = piVar33 + -param_8;" (assignment_expression "piVar33 = piVar33 + -param_8" identifier = (binary_expression "piVar33 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) }) while (parenthesized_expression "(uVar27 != 0xffffffff)" ( (binary_expression "uVar27 != 0xffffffff" identifier != number_literal) )) ;) (if_statement "if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_7c == -1)" ( (binary_expression "local_7c == -1" identifier == number_literal) )) (compound_statement "{\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }" { (expression_statement "iVar6 = local_78 - param_2;" (assignment_expression "iVar6 = local_78 - param_2" identifier = (binary_expression "local_78 - param_2" identifier - identifier)) ;) (expression_statement "piVar33 = param_6 + iVar6;" (assignment_expression "piVar33 = param_6 + iVar6" identifier = (binary_expression "param_6 + iVar6" identifier + identifier)) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" { (if_statement "if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }" { (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" identifier = (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }" if (parenthesized_expression "((iVar30 == 0) && (param_2 == 1))" ( (binary_expression "(iVar30 == 0) && (param_2 == 1)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) ))) )) (compound_statement "{\n                  piVar33[1] = piVar33[1] + -1;\n                }" { (expression_statement "piVar33[1] = piVar33[1] + -1;" (assignment_expression "piVar33[1] = piVar33[1] + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "piVar33[1] + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) + number_literal)) ;) })) (labeled_statement "LAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" statement_identifier : (expression_statement "param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" (assignment_expression "param_6[(int)puVar25] = param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" identifier [ (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" identifier [ (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]) + number_literal)) ;)) }) (else_clause "else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" else (compound_statement "{\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" { (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" { (if_statement "if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" { (labeled_statement "LAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;" statement_identifier : (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" identifier = (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" identifier + identifier) + number_literal)) ;)) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" if (parenthesized_expression "(((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "(iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) , (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) && (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) , (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);" do (compound_statement "{\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      }" { (expression_statement "bVar1 = param_2 < iVar30;" (assignment_expression "bVar1 = param_2 < iVar30" identifier = (binary_expression "param_2 < iVar30" identifier < identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_00043f0c;" goto statement_identifier ;) })) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);" do (compound_statement "{\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" { (if_statement "if (param_2 == iVar30) goto LAB_00043ea4;" if (parenthesized_expression "(param_2 == iVar30)" ( (binary_expression "param_2 == iVar30" identifier == identifier) )) (goto_statement "goto LAB_00043ea4;" goto statement_identifier ;)) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "*piVar33 = iVar21 + 1;" (assignment_expression "*piVar33 = iVar21 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 + 1 == 0)" ( (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) }) (else_clause "else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" else (if_statement "if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_7c == 1)" ( (binary_expression "local_7c == 1" identifier == number_literal) )) (compound_statement "{\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" { (if_statement "if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" if (parenthesized_expression "(local_78 < iVar31)" ( (binary_expression "local_78 < iVar31" identifier < identifier) )) (compound_statement "{\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }" { (expression_statement "piVar33 = param_6 + (local_78 - param_2);" (assignment_expression "piVar33 = param_6 + (local_78 - param_2)" identifier = (binary_expression "param_6 + (local_78 - param_2)" identifier + (parenthesized_expression "(local_78 - param_2)" ( (binary_expression "local_78 - param_2" identifier - identifier) )))) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" if (parenthesized_expression "(((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 )" ( (binary_expression "((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" (parenthesized_expression "((iVar30 == 0) && (1 < param_2))" ( (binary_expression "(iVar30 == 0) && (1 < param_2)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) ))) )) && (parenthesized_expression "((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" ( (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))))" ( (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) , (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (binary_expression "iVar30 == 0" identifier == number_literal) && (parenthesized_expression "((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" ( (parenthesized_expression "(param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (binary_expression "param_2 != 2" identifier != number_literal) && (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) , (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) ))))) )) ))) )) (compound_statement "{\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);" do (compound_statement "{\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                }" { (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" identifier = (binary_expression "param_2 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" else (compound_statement "{\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" { (expression_statement "piVar33 = param_6 + local_78 + param_2 * -2;" (assignment_expression "piVar33 = param_6 + local_78 + param_2 * -2" identifier = (binary_expression "param_6 + local_78 + param_2 * -2" (binary_expression "param_6 + local_78" identifier + identifier) + (binary_expression "param_2 * -2" identifier * number_literal))) ;) (while_statement "while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" { (do_statement "do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);" do (compound_statement "{\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                }" { (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (do_statement "do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);" do (compound_statement "{\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  }" { (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar31 < 2)" ( (binary_expression "iVar31 < 2" identifier < number_literal) )) ;) (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar31 == 2)" ( (binary_expression "iVar31 == 2" identifier == number_literal) )) ;) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) break;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar28 = piVar33 + 3;" (assignment_expression "piVar28 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" while (parenthesized_expression "(bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1)" ( (comma_expression "bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1" (assignment_expression "bVar1 = iVar30 != iVar31" identifier = (binary_expression "iVar30 != iVar31" identifier != identifier)) , (comma_expression "iVar30 = iVar30 + 1, bVar1" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" { (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "*piVar28 = iVar6 + 1;" (assignment_expression "*piVar28 = iVar6 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar6 + 1 != 0)" ( (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) })) })) }))) })))) })) (labeled_statement "LAB_00043068:\n        iVar30 = local_78 + param_2 * -2;" statement_identifier : (expression_statement "iVar30 = local_78 + param_2 * -2;" (assignment_expression "iVar30 = local_78 + param_2 * -2" identifier = (binary_expression "local_78 + param_2 * -2" identifier + (binary_expression "param_2 * -2" identifier * number_literal))) ;)) (if_statement "if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }" { (expression_statement "iVar30 = param_2 + iVar30;" (assignment_expression "iVar30 = param_2 + iVar30" identifier = (binary_expression "param_2 + iVar30" identifier + identifier)) ;) (expression_statement "iVar31 = iVar31 - local_78;" (assignment_expression "iVar31 = iVar31 - local_78" identifier = (binary_expression "iVar31 - local_78" identifier - identifier)) ;) (if_statement "if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" { (expression_statement "iVar6 = param_2 + -1;" (assignment_expression "iVar6 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = *param_6;" (assignment_expression "iVar21 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar28 = param_1;" (assignment_expression "piVar28 = param_1" identifier = identifier) ;) (expression_statement "piVar33 = param_6;" (assignment_expression "piVar33 = param_6" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" { (do_statement "do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);" do (compound_statement "{\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = piVar33[1];" (assignment_expression "iVar21 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar28 = param_1 + param_2 + -1;" (assignment_expression "piVar28 = param_1 + param_2 + -1" identifier = (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" * identifier) = identifier) ;) })) (expression_statement "param_7 = (uint *)(iVar30 * 4);" (assignment_expression "param_7 = (uint *)(iVar30 * 4)" identifier = (cast_expression "(uint *)(iVar30 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 * 4)" ( (binary_expression "iVar30 * 4" identifier * number_literal) )))) ;) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" (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 "(param_1,param_1,param_6 + param_2,iVar30)" ( identifier , identifier , (binary_expression "param_6 + param_2" identifier + identifier) , identifier )))) ;) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" identifier = (cast_expression "(uint *)(param_1 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar30)" ( (binary_expression "param_1 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" { (if_statement "if (iVar31 < 2) goto LAB_00043184;" if (parenthesized_expression "(iVar31 < 2)" ( (binary_expression "iVar31 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" { (if_statement "if (iVar31 == 2) goto LAB_00043184;" if (parenthesized_expression "(iVar31 == 2)" ( (binary_expression "iVar31 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) goto LAB_00043a88;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;)) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              }" { (expression_statement "bVar1 = iVar31 == iVar30;" (assignment_expression "bVar1 = iVar31 == iVar30" identifier = (binary_expression "iVar31 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043184;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00043a88:\n          param_11 = (uint *)0x0;" statement_identifier : (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" else (compound_statement "{\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" { (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" (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_1,param_6,param_6 + param_2 * 2,iVar30)" ( identifier , identifier , (binary_expression "param_6 + param_2 * 2" identifier + (binary_expression "param_2 * 2" identifier * number_literal)) , identifier )))) ;) (expression_statement "puVar17 = (uint *)(param_6 + iVar30);" (assignment_expression "puVar17 = (uint *)(param_6 + iVar30)" identifier = (cast_expression "(uint *)(param_6 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar30)" ( (binary_expression "param_6 + iVar30" identifier + identifier) )))) ;) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" identifier = (cast_expression "(uint *)(param_1 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar30)" ( (binary_expression "param_1 + iVar30" identifier + identifier) )))) ;) (expression_statement "iVar30 = param_2 - iVar30;" (assignment_expression "iVar30 = param_2 - iVar30" identifier = (binary_expression "param_2 - iVar30" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + uVar26;" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }" { (if_statement "if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" if (parenthesized_expression "(iVar30 < 2)" ( (binary_expression "iVar30 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }" { (labeled_statement "LAB_00043b4c:\n              param_11 = (uint *)0x1;" statement_identifier : (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" else (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }" { (if_statement "if (iVar30 == 2) goto LAB_00043b4c;" if (parenthesized_expression "(iVar30 == 2)" ( (binary_expression "iVar30 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }" { (expression_statement "puVar18 = puVar17 + 3;" (assignment_expression "puVar18 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);" do (compound_statement "{\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  }" { (if_statement "if (iVar30 == iVar6) goto LAB_00043b4c;" if (parenthesized_expression "(iVar30 == iVar6)" ( (binary_expression "iVar30 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n                  iVar6 = 3;\n                }" else (compound_statement "{\n                  iVar6 = 3;\n                }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) }))) }) (else_clause "else {\n                iVar6 = 2;\n              }" else (compound_statement "{\n                iVar6 = 2;\n              }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;" if (parenthesized_expression "((puVar25 == puVar17) || (iVar30 <= iVar6))" ( (binary_expression "(puVar25 == puVar17) || (iVar30 <= iVar6)" (parenthesized_expression "(puVar25 == puVar17)" ( (binary_expression "puVar25 == puVar17" identifier == identifier) )) || (parenthesized_expression "(iVar30 <= iVar6)" ( (binary_expression "iVar30 <= iVar6" identifier <= identifier) ))) )) (goto_statement "goto LAB_00044504;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar17 + iVar6;" (assignment_expression "puVar5 = puVar17 + iVar6" identifier = (binary_expression "puVar17 + iVar6" identifier + identifier)) ;) (expression_statement "puVar25 = puVar25 + iVar6;" (assignment_expression "puVar25 = puVar25 + iVar6" identifier = (binary_expression "puVar25 + iVar6" identifier + identifier)) ;) (do_statement "do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);" do (compound_statement "{\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              }" { (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar17 + iVar30 != puVar5)" ( (binary_expression "puVar17 + iVar30 != puVar5" (binary_expression "puVar17 + iVar30" identifier + identifier) != identifier) )) ;) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" else (compound_statement "{\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" { (if_statement "if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" if (parenthesized_expression "((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30))" ( (binary_expression "(puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)" (parenthesized_expression "(puVar25 != puVar17)" ( (binary_expression "puVar25 != puVar17" identifier != identifier) )) && (parenthesized_expression "(puVar5 = puVar17 + 1, 1 < iVar30)" ( (comma_expression "puVar5 = puVar17 + 1, 1 < iVar30" (assignment_expression "puVar5 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) , (binary_expression "1 < iVar30" number_literal < identifier)) ))) )) (compound_statement "{\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" { (do_statement "do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);" do (compound_statement "{\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar17 + iVar30)" ( (binary_expression "puVar5 != puVar17 + iVar30" identifier != (binary_expression "puVar17 + iVar30" identifier + identifier)) )) ;) })) (labeled_statement "LAB_00044504:\n            param_11 = (uint *)0x0;" statement_identifier : (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "param_7 = (uint *)(param_1 + param_2);" (assignment_expression "param_7 = (uint *)(param_1 + param_2)" identifier = (cast_expression "(uint *)(param_1 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2)" ( (binary_expression "param_1 + param_2" identifier + identifier) )))) ;) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" (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 "(param_1,param_1,param_6 + param_2,param_2)" ( identifier , identifier , (binary_expression "param_6 + param_2" identifier + identifier) , identifier )))) ;) (expression_statement "uVar26 = *param_7;" (assignment_expression "uVar26 = *param_7" identifier = (pointer_expression "*param_7" * identifier)) ;) (expression_statement "*param_7 = uVar26 - uVar27;" (assignment_expression "*param_7 = uVar26 - uVar27" (pointer_expression "*param_7" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" if (parenthesized_expression "((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff))" ( (binary_expression "(uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) && (parenthesized_expression "(param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" ( (comma_expression "param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff" (assignment_expression "param_11 = (uint *)((int)param_11 + -1)" identifier = (cast_expression "(uint *)((int)param_11 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + -1)" ( (binary_expression "(int)param_11 + -1" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "param_11 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" { (labeled_statement "LAB_00043184:\n            iVar30 = *param_1;" statement_identifier : (expression_statement "iVar30 = *param_1;" (assignment_expression "iVar30 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "*param_1 = iVar30 + 1;" (assignment_expression "*param_1 = iVar30 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" { (if_statement "if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" { (labeled_statement "LAB_00043204:\n                param_11 = (uint *)0x1;" statement_identifier : (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) (expression_statement "iVar30 = param_1[1];" (assignment_expression "iVar30 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar30 + 1;" (assignment_expression "param_1[1] = iVar30 + 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" { (if_statement "if (param_2 == 2) goto LAB_00043204;" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "iVar30 = param_1[2];" (assignment_expression "iVar30 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = iVar30 + 1;" (assignment_expression "param_1[2] = iVar30 + 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = param_1 + 3;" (assignment_expression "piVar33 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);" do (compound_statement "{\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  }" { (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" identifier = (binary_expression "param_2 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043204;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" if (parenthesized_expression "(local_2c == *(int *)puVar4)" ( (binary_expression "local_2c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          return param_11;\n        }" { (return_statement "return param_11;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (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_00045c00:\n        iVar30 = 0x230;" statement_identifier : (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" identifier = number_literal) ;)) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_4 = local_84;" (assignment_expression "param_4 = local_84" identifier = identifier) ;) (goto_statement "goto LAB_000427f4;" goto statement_identifier ;) }))) (expression_statement "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_7,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = 1 << (uVar27 & 0x1f);" (assignment_expression "iVar6 = 1 << (uVar27 & 0x1f)" identifier = (binary_expression "1 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "piVar33 = (int *)(iVar6 - 1U & (uint)param_7);" (assignment_expression "piVar33 = (int *)(iVar6 - 1U & (uint)param_7)" identifier = (cast_expression "(int *)(iVar6 - 1U & (uint)param_7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - 1U & (uint)param_7)" ( (binary_expression "iVar6 - 1U & (uint)param_7" (binary_expression "iVar6 - 1U" identifier - number_literal) & (cast_expression "(uint)param_7" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (if_statement "if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" if (parenthesized_expression "(piVar33 == (int *)0x0)" ( (binary_expression "piVar33 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" { (expression_statement "iVar31 = iVar6;" (assignment_expression "iVar31 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }" if (parenthesized_expression "(iVar6 < 0x20)" ( (binary_expression "iVar6 < 0x20" identifier < number_literal) )) (compound_statement "{\n          iVar31 = 0x20;\n        }" { (expression_statement "iVar31 = 0x20;" (assignment_expression "iVar31 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar21 = (int)param_7 >> (uVar27 & 0x1f);" (assignment_expression "iVar21 = (int)param_7 >> (uVar27 & 0x1f)" identifier = (binary_expression "(int)param_7 >> (uVar27 & 0x1f)" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar31 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar31 == 0)" ( (binary_expression "iVar31 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;" (assignment_expression "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" identifier = (binary_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" (parenthesized_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 )" ( (binary_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31" (cast_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" ( (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2" (parenthesized_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f))" ( (binary_expression "((int)param_7 << 5) >> (uVar27 & 0x1f)" (parenthesized_expression "((int)param_7 << 5)" ( (binary_expression "(int)param_7 << 5" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )) >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar32 = iVar31;" (assignment_expression "iVar32 = iVar31" identifier = identifier) ;) (if_statement "if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }" if (parenthesized_expression "(iVar31 < 0)" ( (binary_expression "iVar31 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar32 = iVar31 + 0x1f;\n        }" { (expression_statement "iVar32 = iVar31 + 0x1f;" (assignment_expression "iVar32 = iVar31 + 0x1f" identifier = (binary_expression "iVar31 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar26 = iVar32 >> 5;" (assignment_expression "uVar26 = iVar32 >> 5" identifier = (binary_expression "iVar32 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" if (parenthesized_expression "(iVar30 <= (int)uVar26)" ( (binary_expression "iVar30 <= (int)uVar26" identifier <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" { (while_statement "while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" { (expression_statement "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);" (assignment_expression "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar26,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar30 = 1 << (uVar7 & 0x1f);" (assignment_expression "iVar30 = 1 << (uVar7 & 0x1f)" identifier = (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar30 - 1U & uVar26) == 0) break;" if (parenthesized_expression "((iVar30 - 1U & uVar26) == 0)" ( (binary_expression "(iVar30 - 1U & uVar26) == 0" (parenthesized_expression "(iVar30 - 1U & uVar26)" ( (binary_expression "iVar30 - 1U & uVar26" (binary_expression "iVar30 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar26 = -iVar30 & (uVar26 + iVar30) - 1;" (assignment_expression "uVar26 = -iVar30 & (uVar26 + iVar30) - 1" identifier = (binary_expression "-iVar30 & (uVar26 + iVar30) - 1" (unary_expression "-iVar30" - identifier) & (binary_expression "(uVar26 + iVar30) - 1" (parenthesized_expression "(uVar26 + iVar30)" ( (binary_expression "uVar26 + iVar30" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar31 = uVar26 << 5;" (assignment_expression "iVar31 = uVar26 << 5" identifier = (binary_expression "uVar26 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)param_7 <= (int)uVar26) goto LAB_00045524;" if (parenthesized_expression "((int)param_7 <= (int)uVar26)" ( (binary_expression "(int)param_7 <= (int)uVar26" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00045524;" goto statement_identifier ;)) (expression_statement "iVar30 = 4 << (uVar27 & 0x1f);" (assignment_expression "iVar30 = 4 << (uVar27 & 0x1f)" identifier = (binary_expression "4 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar32 = uVar26 + 1;" (assignment_expression "iVar32 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);" (assignment_expression "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" (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_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(iVar32 * 2 << (uVar27 & 0x1f)) << 2" (parenthesized_expression "(iVar32 * 2 << (uVar27 & 0x1f))" ( (binary_expression "iVar32 * 2 << (uVar27 & 0x1f)" (binary_expression "iVar32 * 2" identifier * number_literal) << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" (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_30,iVar32 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "iVar32 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;" (assignment_expression "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" identifier = (binary_expression "iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" identifier + (binary_expression "(iVar32 << (uVar27 & 0x1f)) * 4" (parenthesized_expression "(iVar32 << (uVar27 & 0x1f))" ( (binary_expression "iVar32 << (uVar27 & 0x1f)" identifier << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);" (assignment_expression "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" (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_30,(uVar27 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar27 + 1) * 4" (parenthesized_expression "(uVar27 + 1)" ( (binary_expression "uVar27 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));" (assignment_expression "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" (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_30,8 << (uVar27 & 0x1f))" ( (pointer_expression "&local_30" & identifier) , (binary_expression "8 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "iVar31 = iVar31 >> (uVar27 & 0x1f);" (assignment_expression "iVar31 = iVar31 >> (uVar27 & 0x1f)" identifier = (binary_expression "iVar31 >> (uVar27 & 0x1f)" identifier >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" if (parenthesized_expression "((int)uVar27 < 0)" ( (binary_expression "(int)uVar27 < 0" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          *(undefined4 *)*local_68 = 0;\n        }" { (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" * (cast_expression "(undefined4 *)*local_68" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) = number_literal) ;) }) (else_clause "else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" else (compound_statement "{\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" identifier = identifier) ;) (do_statement "do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);" do (compound_statement "{\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          }" { (expression_statement "uVar2 = uVar7 & 0x1f;" (assignment_expression "uVar2 = uVar7 & 0x1f" identifier = (binary_expression "uVar7 & 0x1f" identifier & number_literal)) ;) (expression_statement "*piVar33 = iVar11;" (assignment_expression "*piVar33 = iVar11" (pointer_expression "*piVar33" * identifier) = identifier) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar11 + (4 << uVar2);" (assignment_expression "iVar11 = iVar11 + (4 << uVar2)" identifier = (binary_expression "iVar11 + (4 << uVar2)" identifier + (parenthesized_expression "(4 << uVar2)" ( (binary_expression "4 << uVar2" number_literal << identifier) )))) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 != uVar7)" ( (binary_expression "uVar27 + 1 != uVar7" (binary_expression "uVar27 + 1" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" * (cast_expression "(undefined4 *)*local_68" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) = number_literal) ;) (if_statement "if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" if (parenthesized_expression "(0 < (int)uVar27)" ( (binary_expression "0 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" { (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" identifier = identifier) ;) (do_statement "do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);" do (compound_statement "{\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            }" { (expression_statement "piVar24 = (int *)*piVar33;" (assignment_expression "piVar24 = (int *)*piVar33" identifier = (cast_expression "(int *)*piVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar33" * identifier))) ;) (expression_statement "piVar29 = piVar24 + iVar11;" (assignment_expression "piVar29 = piVar24 + iVar11" identifier = (binary_expression "piVar24 + iVar11" identifier + identifier)) ;) (expression_statement "piVar28 = (int *)(piVar33[1] + iVar11 * 4);" (assignment_expression "piVar28 = (int *)(piVar33[1] + iVar11 * 4)" identifier = (cast_expression "(int *)(piVar33[1] + iVar11 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar33[1] + iVar11 * 4)" ( (binary_expression "piVar33[1] + iVar11 * 4" (subscript_expression "piVar33[1]" identifier [ number_literal ]) + (binary_expression "iVar11 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);" do (compound_statement "{\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              }" { (expression_statement "iVar12 = *piVar24;" (assignment_expression "iVar12 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "piVar24 = piVar24 + 1;" (assignment_expression "piVar24 = piVar24 + 1" identifier = (binary_expression "piVar24 + 1" identifier + number_literal)) ;) (expression_statement "piVar28[-iVar11] = iVar12 * 2;" (assignment_expression "piVar28[-iVar11] = iVar12 * 2" (subscript_expression "piVar28[-iVar11]" identifier [ (unary_expression "-iVar11" - identifier) ]) = (binary_expression "iVar12 * 2" identifier * number_literal)) ;) (expression_statement "*piVar28 = iVar12 * 2 + 1;" (assignment_expression "*piVar28 = iVar12 * 2 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar12 * 2 + 1" (binary_expression "iVar12 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar11 << 1;" (assignment_expression "iVar11 = iVar11 << 1" identifier = (binary_expression "iVar11 << 1" identifier << number_literal)) ;) }) while (parenthesized_expression "(local_68 + uVar27 != piVar33)" ( (binary_expression "local_68 + uVar27 != piVar33" (binary_expression "local_68 + uVar27" identifier + identifier) != identifier) )) ;) })) }))) (expression_statement "iVar11 = (int)param_7 * 4;" (assignment_expression "iVar11 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" if (parenthesized_expression "(0 < iVar23)" ( (binary_expression "0 < iVar23" number_literal < identifier) )) (compound_statement "{\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" { (expression_statement "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1" identifier = (binary_expression "(iVar21 << (uVar27 & 0x1f)) + 1" (parenthesized_expression "(iVar21 << (uVar27 & 0x1f))" ( (binary_expression "iVar21 << (uVar27 & 0x1f)" identifier << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x2170)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x2170)" ( (binary_expression "PTR_LAB_0009d078 + 0x2170" identifier + number_literal) )))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0xd98)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0xd98)" ( (binary_expression "PTR_LAB_0009d078 + 0xd98" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);" do (compound_statement "{\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          }" { (expression_statement "puVar25 = local_84 + iVar12;" (assignment_expression "puVar25 = local_84 + iVar12" identifier = (binary_expression "local_84 + iVar12" identifier + identifier)) ;) (expression_statement "piVar28 = (int *)*puVar25;" (assignment_expression "piVar28 = (int *)*puVar25" identifier = (cast_expression "(int *)*puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (expression_statement "piVar24 = piVar28 + (int)param_7;" (assignment_expression "piVar24 = piVar28 + (int)param_7" identifier = (binary_expression "piVar28 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar33 = piVar28;" (assignment_expression "piVar33 = piVar28" identifier = identifier) ;) (if_statement "if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar24 != 0)" ( (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" { (do_statement "do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);" do (compound_statement "{\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }" if (parenthesized_expression "(*piVar24 == 0)" ( (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" * identifier) == number_literal) )) (compound_statement "{\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }" { (expression_statement "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);" (assignment_expression "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" identifier = (cast_expression "(int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" (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 "(piVar28,0,iVar11)" ( identifier , number_literal , identifier ))))) ;) (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar24 = 0;\n              }" else (compound_statement "{\n                *piVar24 = 0;\n              }" { (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) }))) })) (if_statement "if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" if (parenthesized_expression "(local_84 == param_4)" ( (binary_expression "local_84 == param_4" identifier == identifier) )) (compound_statement "{\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }" { (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" else (compound_statement "{\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" { (expression_statement "piVar24 = (int *)param_4[iVar12];" (assignment_expression "piVar24 = (int *)param_4[iVar12]" identifier = (cast_expression "(int *)param_4[iVar12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[iVar12]" identifier [ identifier ]))) ;) (expression_statement "piVar29 = piVar24 + (int)param_7;" (assignment_expression "piVar29 = piVar24 + (int)param_7" identifier = (binary_expression "piVar24 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" identifier = identifier) ;) (if_statement "if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" if (parenthesized_expression "(*piVar29 != 0)" ( (binary_expression "*piVar29 != 0" (pointer_expression "*piVar29" * identifier) != number_literal) )) (compound_statement "{\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" { (do_statement "do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);" do (compound_statement "{\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                }" { (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }" if (parenthesized_expression "(*piVar29 == 0)" ( (binary_expression "*piVar29 == 0" (pointer_expression "*piVar29" * identifier) == number_literal) )) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11)" (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 "(piVar24,0,iVar11)" ( identifier , number_literal , identifier ))) ;) (expression_statement "*piVar29 = 1;" (assignment_expression "*piVar29 = 1" (pointer_expression "*piVar29" * identifier) = number_literal) ;) }) (else_clause "else {\n                  *piVar29 = 0;\n                }" else (compound_statement "{\n                  *piVar29 = 0;\n                }" { (expression_statement "*piVar29 = 0;" (assignment_expression "*piVar29 = 0" (pointer_expression "*piVar29" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , (subscript_expression "param_4[iVar12]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);" (assignment_expression "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" identifier = (call_expression "(*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" ( (pointer_expression "*puVar25" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(*puVar25 + iVar11) = uVar16;" (assignment_expression "*(undefined4 *)(*puVar25 + iVar11) = uVar16" (pointer_expression "*(undefined4 *)(*puVar25 + iVar11)" * (cast_expression "(undefined4 *)(*puVar25 + iVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + iVar11)" ( (binary_expression "*puVar25 + iVar11" (pointer_expression "*puVar25" * identifier) + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(iVar23 != iVar12)" ( (binary_expression "iVar23 != iVar12" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00042c64;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" ( (binary_expression "PTR_LAB_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_0009d06c + 0x4d20" identifier + number_literal) ))) ;) (labeled_statement "LAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" statement_identifier : (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" ( (binary_expression "PTR_LAB_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_0009d06c + 0x4d34" identifier + number_literal) ))) ;)) (labeled_statement "LAB_0004555c:\n      iVar30 = param_9 << 3;" statement_identifier : (expression_statement "iVar30 = param_9 << 3;" (assignment_expression "iVar30 = param_9 << 3" identifier = (binary_expression "param_9 << 3" identifier << number_literal)) ;)) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "piVar28 = local_68 + -2;" (assignment_expression "piVar28 = local_68 + -2" identifier = (binary_expression "local_68 + -2" identifier + number_literal)) ;) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" identifier (argument_list "(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_5 + 1;" (assignment_expression "puVar25 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 2" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" if (parenthesized_expression "(iVar20 < 1)" ( (binary_expression "iVar20 < 1" identifier < number_literal) )) (compound_statement "{\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }" { (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" else (compound_statement "{\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" { (expression_statement "piVar29 = piVar24 + iVar20 * 2;" (assignment_expression "piVar29 = piVar24 + iVar20 * 2" identifier = (binary_expression "piVar24 + iVar20 * 2" identifier + (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_5;" (assignment_expression "puVar17 = param_5" identifier = identifier) ;) (do_statement "do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);" do (compound_statement "{\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        }" { (expression_statement "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[2];" (assignment_expression "puVar18 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar6);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar6)" identifier = (binary_expression "iVar21 - (uVar27 + iVar6)" identifier - (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" identifier = (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" (binary_expression "iVar31 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar6) - iVar21" (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00045614;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045614;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_00045614:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar6 = uVar27 + uVar26 + iVar6;" (assignment_expression "iVar6 = uVar27 + uVar26 + iVar6" identifier = (binary_expression "uVar27 + uVar26 + iVar6" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar6 - 1;" (assignment_expression "uVar27 = iVar6 - 1" identifier = (binary_expression "iVar6 - 1" identifier - number_literal)) ;) (if_statement "if (iVar6 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar6 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar6 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar6 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar29)" ( (binary_expression "piVar24 != piVar29" identifier != identifier) )) ;) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar28 = piVar24 + iVar20 * 2;" (assignment_expression "piVar28 = piVar24 + iVar20 * 2" identifier = (binary_expression "piVar24 + iVar20 * 2" identifier + (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);" do (compound_statement "{\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        }" { (expression_statement "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(param_11,puVar25[2],local_78 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar25[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[2];" (assignment_expression "puVar17 = (uint *)puVar25[2]" identifier = (cast_expression "(uint *)puVar25[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar6 = iVar31 - (uVar27 + iVar30);" (assignment_expression "iVar6 = iVar31 - (uVar27 + iVar30)" identifier = (binary_expression "iVar31 - (uVar27 + iVar30)" identifier - (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;" (assignment_expression "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" identifier = (binary_expression "iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" (binary_expression "iVar6 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar30) - iVar31" (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar6 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar6 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar6 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000457d8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000457d8;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_000457d8:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" identifier = (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" identifier = (binary_expression "iVar30 - 1" identifier - number_literal)) ;) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar30 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 4;" (assignment_expression "puVar25 = puVar25 + 4" identifier = (binary_expression "puVar25 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar28)" ( (binary_expression "piVar24 != piVar28" identifier != identifier) )) ;) }))) }) while (parenthesized_expression "(local_7c < 1)" ( (binary_expression "local_7c < 1" identifier < number_literal) )) ;)) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "mp_limb_t mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)\n\n{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  mp_ptr *ppmVar16;\n  mp_ptr *ppmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  int **ppiVar20;\n  uint *puVar21;\n  int iVar22;\n  mp_limb_t mVar23;\n  mp_limb_t *pmVar24;\n  int K;\n  undefined4 *puVar25;\n  uint uVar26;\n  int *piVar27;\n  mp_ptr pmVar28;\n  mp_ptr pmVar29;\n  uint uVar30;\n  int iVar31;\n  int *piVar32;\n  int *piVar33;\n  mp_ptr pmVar34;\n  uint *puVar35;\n  mp_limb_t __gmp_c;\n  int iVar36;\n  int iVar37;\n  int iVar38;\n  int **ppiVar39;\n  uint *puVar40;\n  int *piVar41;\n  mp_ptr *ppmVar42;\n  int iVar43;\n  int iVar44;\n  int *piVar45;\n  code *local_90;\n  mp_ptr *local_84;\n  uint local_80;\n  int local_7c;\n  mp_size_t local_70;\n  code *local_6c;\n  undefined4 *local_5c;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  K = 1 << (k & 0x1fU);\n  local_70 = l * 2;\n  local_84 = Ap;\n  if (k == 1) {\n    pmVar29 = *Ap;\n    if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }\n    iVar37 = (int)B + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);\n    puVar21 = *Ap;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n    if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }\n    pmVar29 = *Bp;\n    if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);\n    puVar21 = *Bp;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n  }\n  else {\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }\nLAB_000446c4:\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (Ap == Bp) goto LAB_00045c00;\n  local_6c = (code *)0x0;\n  iVar36 = 0x270;\n  ppmVar16 = Bp;\nLAB_000427f4:\n  do {\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  } while( true );\n}\n\n" (function_definition "mp_limb_t mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)\n\n{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  mp_ptr *ppmVar16;\n  mp_ptr *ppmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  int **ppiVar20;\n  uint *puVar21;\n  int iVar22;\n  mp_limb_t mVar23;\n  mp_limb_t *pmVar24;\n  int K;\n  undefined4 *puVar25;\n  uint uVar26;\n  int *piVar27;\n  mp_ptr pmVar28;\n  mp_ptr pmVar29;\n  uint uVar30;\n  int iVar31;\n  int *piVar32;\n  int *piVar33;\n  mp_ptr pmVar34;\n  uint *puVar35;\n  mp_limb_t __gmp_c;\n  int iVar36;\n  int iVar37;\n  int iVar38;\n  int **ppiVar39;\n  uint *puVar40;\n  int *piVar41;\n  mp_ptr *ppmVar42;\n  int iVar43;\n  int iVar44;\n  int *piVar45;\n  code *local_90;\n  mp_ptr *local_84;\n  uint local_80;\n  int local_7c;\n  mp_size_t local_70;\n  code *local_6c;\n  undefined4 *local_5c;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  K = 1 << (k & 0x1fU);\n  local_70 = l * 2;\n  local_84 = Ap;\n  if (k == 1) {\n    pmVar29 = *Ap;\n    if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }\n    iVar37 = (int)B + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);\n    puVar21 = *Ap;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n    if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }\n    pmVar29 = *Bp;\n    if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);\n    puVar21 = *Bp;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n  }\n  else {\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }\nLAB_000446c4:\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (Ap == Bp) goto LAB_00045c00;\n  local_6c = (code *)0x0;\n  iVar36 = 0x270;\n  ppmVar16 = Bp;\nLAB_000427f4:\n  do {\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  } while( true );\n}" type_identifier (function_declarator "mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)" identifier (parameter_list "(mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)" ( (parameter_declaration "mp_ptr op" type_identifier identifier) , (parameter_declaration "mp_size_t pl" type_identifier identifier) , (parameter_declaration "int k" primitive_type identifier) , (parameter_declaration "mp_ptr *Ap" type_identifier (pointer_declarator "*Ap" * identifier)) , (parameter_declaration "mp_ptr *Bp" type_identifier (pointer_declarator "*Bp" * identifier)) , (parameter_declaration "mp_ptr A" type_identifier identifier) , (parameter_declaration "mp_ptr B" type_identifier identifier) , (parameter_declaration "mp_size_t nprime" type_identifier identifier) , (parameter_declaration "mp_size_t l" type_identifier identifier) , (parameter_declaration "mp_size_t Mp" type_identifier identifier) , (parameter_declaration "int **fft_l" primitive_type (pointer_declarator "**fft_l" * (pointer_declarator "*fft_l" * identifier))) , (parameter_declaration "mp_ptr T" type_identifier identifier) , (parameter_declaration "int sqr" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  mp_ptr *ppmVar16;\n  mp_ptr *ppmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  int **ppiVar20;\n  uint *puVar21;\n  int iVar22;\n  mp_limb_t mVar23;\n  mp_limb_t *pmVar24;\n  int K;\n  undefined4 *puVar25;\n  uint uVar26;\n  int *piVar27;\n  mp_ptr pmVar28;\n  mp_ptr pmVar29;\n  uint uVar30;\n  int iVar31;\n  int *piVar32;\n  int *piVar33;\n  mp_ptr pmVar34;\n  uint *puVar35;\n  mp_limb_t __gmp_c;\n  int iVar36;\n  int iVar37;\n  int iVar38;\n  int **ppiVar39;\n  uint *puVar40;\n  int *piVar41;\n  mp_ptr *ppmVar42;\n  int iVar43;\n  int iVar44;\n  int *piVar45;\n  code *local_90;\n  mp_ptr *local_84;\n  uint local_80;\n  int local_7c;\n  mp_size_t local_70;\n  code *local_6c;\n  undefined4 *local_5c;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  K = 1 << (k & 0x1fU);\n  local_70 = l * 2;\n  local_84 = Ap;\n  if (k == 1) {\n    pmVar29 = *Ap;\n    if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }\n    iVar37 = (int)B + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);\n    puVar21 = *Ap;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n    if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }\n    pmVar29 = *Bp;\n    if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);\n    puVar21 = *Bp;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n  }\n  else {\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }\nLAB_000446c4:\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (Ap == Bp) goto LAB_00045c00;\n  local_6c = (code *)0x0;\n  iVar36 = 0x270;\n  ppmVar16 = Bp;\nLAB_000427f4:\n  do {\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar3;" type_identifier (pointer_declarator "*pmVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "mp_ptr pmVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "mp_ptr *ppmVar16;" type_identifier (pointer_declarator "*ppmVar16" * identifier) ;) (declaration "mp_ptr *ppmVar17;" type_identifier (pointer_declarator "*ppmVar17" * identifier) ;) (declaration "mp_ptr pmVar18;" type_identifier identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int **ppiVar20;" primitive_type (pointer_declarator "**ppiVar20" * (pointer_declarator "*ppiVar20" * identifier)) ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "mp_limb_t mVar23;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar24;" type_identifier (pointer_declarator "*pmVar24" * identifier) ;) (declaration "int K;" primitive_type identifier ;) (declaration "undefined4 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "mp_ptr pmVar28;" type_identifier identifier ;) (declaration "mp_ptr pmVar29;" type_identifier identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int *piVar33;" primitive_type (pointer_declarator "*piVar33" * identifier) ;) (declaration "mp_ptr pmVar34;" type_identifier identifier ;) (declaration "uint *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "mp_limb_t __gmp_c;" type_identifier identifier ;) (declaration "int iVar36;" primitive_type identifier ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "int **ppiVar39;" primitive_type (pointer_declarator "**ppiVar39" * (pointer_declarator "*ppiVar39" * identifier)) ;) (declaration "uint *puVar40;" type_identifier (pointer_declarator "*puVar40" * identifier) ;) (declaration "int *piVar41;" primitive_type (pointer_declarator "*piVar41" * identifier) ;) (declaration "mp_ptr *ppmVar42;" type_identifier (pointer_declarator "*ppmVar42" * identifier) ;) (declaration "int iVar43;" primitive_type identifier ;) (declaration "int iVar44;" primitive_type identifier ;) (declaration "int *piVar45;" primitive_type (pointer_declarator "*piVar45" * identifier) ;) (declaration "code *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "mp_ptr *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "mp_size_t local_70;" type_identifier identifier ;) (declaration "code *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined4 *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar5 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (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 "K = 1 << (k & 0x1fU);" (assignment_expression "K = 1 << (k & 0x1fU)" identifier = (binary_expression "1 << (k & 0x1fU)" number_literal << (parenthesized_expression "(k & 0x1fU)" ( (binary_expression "k & 0x1fU" identifier & number_literal) )))) ;) (expression_statement "local_70 = l * 2;" (assignment_expression "local_70 = l * 2" identifier = (binary_expression "l * 2" identifier * number_literal)) ;) (expression_statement "local_84 = Ap;" (assignment_expression "local_84 = Ap" identifier = identifier) ;) (if_statement "if (k == 1) {\n    pmVar29 = *Ap;\n    if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }\n    iVar37 = (int)B + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);\n    puVar21 = *Ap;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n    if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }\n    pmVar29 = *Bp;\n    if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);\n    puVar21 = *Bp;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n  }\n  else {\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }" if (parenthesized_expression "(k == 1)" ( (binary_expression "k == 1" identifier == number_literal) )) (compound_statement "{\n    pmVar29 = *Ap;\n    if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }\n    iVar37 = (int)B + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);\n    puVar21 = *Ap;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n    if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }\n    pmVar29 = *Bp;\n    if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);\n    iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);\n    puVar21 = *Bp;\n    uVar26 = *(uint *)((int)puVar21 + iVar36);\n    if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }\n    if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }\n  }" { (expression_statement "pmVar29 = *Ap;" (assignment_expression "pmVar29 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (if_statement "if (B == (mp_ptr)0xffffffff) {\n      iVar36 = -4;\n    }\n    else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }" if (parenthesized_expression "(B == (mp_ptr)0xffffffff)" ( (binary_expression "B == (mp_ptr)0xffffffff" identifier == (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      iVar36 = -4;\n    }" { (expression_statement "iVar36 = -4;" (assignment_expression "iVar36 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }" else (compound_statement "{\n      piVar32 = (int *)*pmVar29;\n      pmVar6 = B;\n      ppiVar20 = fft_l;\n      pmVar3 = pmVar29;\n      if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }\n    }" { (expression_statement "piVar32 = (int *)*pmVar29;" (assignment_expression "piVar32 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B == (mp_ptr)0x0) {\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }\n      else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }" if (parenthesized_expression "(B == (mp_ptr)0x0)" ( (binary_expression "B == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        iVar36 = 0;\n        *fft_l = piVar32;\n      }" { (expression_statement "iVar36 = 0;" (assignment_expression "iVar36 = 0" identifier = number_literal) ;) (expression_statement "*fft_l = piVar32;" (assignment_expression "*fft_l = piVar32" (pointer_expression "*fft_l" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }" else (compound_statement "{\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        iVar36 = (int)B * 4;\n        fft_l[(int)B] = piVar32;\n      }" { (do_statement "do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        }" { (expression_statement "*ppiVar20 = piVar32;" (assignment_expression "*ppiVar20 = piVar32" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar32 = (int *)pmVar3[1];" (assignment_expression "piVar32 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "iVar36 = (int)B * 4;" (assignment_expression "iVar36 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "fft_l[(int)B] = piVar32;" (assignment_expression "fft_l[(int)B] = piVar32" (subscript_expression "fft_l[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar37 = (int)B + 1;" (assignment_expression "iVar37 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[1],iVar37)" (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 "(pmVar29,pmVar29,Ap[1],iVar37)" ( identifier , identifier , (subscript_expression "Ap[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[1],fft_l,Ap[1],iVar37)" (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 "(Ap[1],fft_l,Ap[1],iVar37)" ( (subscript_expression "Ap[1]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = *Ap;" (assignment_expression "puVar21 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar36);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar36)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar36)" * (cast_expression "(uint *)((int)puVar21 + iVar36)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar26 = 1;\n      }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar26 = 0;\n      }" { (if_statement "if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_00042730;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00042730;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_00042730;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_00042730;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00044428;" goto statement_identifier ;) })) (labeled_statement "LAB_00042730:\n        uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00044428:\n        uVar26 = 1;\n      }" else (compound_statement "{\nLAB_00044428:\n        uVar26 = 1;\n      }" { (labeled_statement "LAB_00044428:\n        uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar36) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar36) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar36)" * (cast_expression "(uint *)((int)puVar21 + iVar36)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar7 != 0) {\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar21 = Ap[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }" { (expression_statement "puVar21 = Ap[1];" (assignment_expression "puVar21 = Ap[1]" identifier = (subscript_expression "Ap[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)((int)puVar21 + iVar36);" (assignment_expression "iVar7 = *(int *)((int)puVar21 + iVar36)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar36)" * (cast_expression "(int *)((int)puVar21 + iVar36)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = *puVar21 - iVar7;" (assignment_expression "uVar26 = *puVar21 - iVar7" identifier = (binary_expression "*puVar21 - iVar7" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar7 = 0;\n      }" if (parenthesized_expression "(uVar26 < (uint)-iVar7)" ( (binary_expression "uVar26 < (uint)-iVar7" identifier < (binary_expression "(uint)-iVar7" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar7 = 1;\n      }" { (if_statement "if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_000427cc;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000427cc;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_000427cc;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_000427cc;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 + 1;" (assignment_expression "*puVar40 = uVar26 + 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_000444cc;" goto statement_identifier ;) })) (labeled_statement "LAB_000427cc:\n        iVar7 = 1;" statement_identifier : (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000444cc:\n        iVar7 = 0;\n      }" else (compound_statement "{\nLAB_000444cc:\n        iVar7 = 0;\n      }" { (labeled_statement "LAB_000444cc:\n        iVar7 = 0;" statement_identifier : (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar21 + iVar36) = iVar7;" (assignment_expression "*(int *)((int)puVar21 + iVar36) = iVar7" (pointer_expression "*(int *)((int)puVar21 + iVar36)" * (cast_expression "(int *)((int)puVar21 + iVar36)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (T != (mp_ptr)0x0) {\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }" if (parenthesized_expression "(T != (mp_ptr)0x0)" ( (binary_expression "T != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_000427e4:\n      iVar36 = 0x230;\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      local_6c = (code *)0x1;\n      ppmVar16 = Ap;\n      goto LAB_000427f4;\n    }" { (labeled_statement "LAB_000427e4:\n      iVar36 = 0x230;" statement_identifier : (expression_statement "iVar36 = 0x230;" (assignment_expression "iVar36 = 0x230" 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 "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppmVar16 = Ap;" (assignment_expression "ppmVar16 = Ap" identifier = identifier) ;) (goto_statement "goto LAB_000427f4;" goto statement_identifier ;) })) (expression_statement "pmVar29 = *Bp;" (assignment_expression "pmVar29 = *Bp" identifier = (pointer_expression "*Bp" * identifier)) ;) (if_statement "if (B != (mp_ptr)0xffffffff) {\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar32 = (int *)*pmVar29;\n      ppiVar20 = fft_l;\n      pmVar6 = B;\n      pmVar3 = pmVar29;\n      if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }\n      *ppiVar20 = piVar32;\n    }" { (expression_statement "piVar32 = (int *)*pmVar29;" (assignment_expression "piVar32 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);\n        ppiVar20 = (int **)((int)fft_l + iVar36);\n      }" { (do_statement "do {\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n          *ppiVar20 = piVar32;\n          pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n          piVar32 = (int *)pmVar3[1];\n          ppiVar20 = ppiVar20 + 1;\n          pmVar3 = pmVar3 + 1;\n        }" { (expression_statement "*ppiVar20 = piVar32;" (assignment_expression "*ppiVar20 = piVar32" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar32 = (int *)pmVar3[1];" (assignment_expression "piVar32 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar36);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar36)" identifier = (cast_expression "(int **)((int)fft_l + iVar36)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar36)" ( (binary_expression "(int)fft_l + iVar36" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*ppiVar20 = piVar32;" (assignment_expression "*ppiVar20 = piVar32" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) })) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[1],iVar37)" (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 "(pmVar29,pmVar29,Bp[1],iVar37)" ( identifier , identifier , (subscript_expression "Bp[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Bp[1],fft_l,Bp[1],iVar37)" (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 "(Bp[1],fft_l,Bp[1],iVar37)" ( (subscript_expression "Bp[1]" identifier [ number_literal ]) , identifier , (subscript_expression "Bp[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = *Bp;" (assignment_expression "puVar21 = *Bp" identifier = (pointer_expression "*Bp" * identifier)) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar36);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar36)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar36)" * (cast_expression "(uint *)((int)puVar21 + iVar36)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar26) {\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n      uVar30 = *puVar21;\n      uVar26 = uVar26 - 1;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }\n      *(uint *)((int)puVar21 + iVar36) = uVar26;\n    }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar26 = 1;\n      }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar26 = 0;\n      }" { (if_statement "if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_0004461c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_0004461c;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_0004461c;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 - 1;\n                puVar40 = puVar40 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_0004461c;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000446dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0004461c:\n        uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000446dc:\n        uVar26 = 1;\n      }" else (compound_statement "{\nLAB_000446dc:\n        uVar26 = 1;\n      }" { (labeled_statement "LAB_000446dc:\n        uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar36) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar36) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar36)" * (cast_expression "(uint *)((int)puVar21 + iVar36)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar7 != 0) {\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar21 = Bp[1];\n      iVar7 = *(int *)((int)puVar21 + iVar36);\n      uVar26 = *puVar21 - iVar7;\n      *puVar21 = uVar26;\n      if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }\n      *(int *)((int)puVar21 + iVar36) = iVar7;\n    }" { (expression_statement "puVar21 = Bp[1];" (assignment_expression "puVar21 = Bp[1]" identifier = (subscript_expression "Bp[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)((int)puVar21 + iVar36);" (assignment_expression "iVar7 = *(int *)((int)puVar21 + iVar36)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar36)" * (cast_expression "(int *)((int)puVar21 + iVar36)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = *puVar21 - iVar7;" (assignment_expression "uVar26 = *puVar21 - iVar7" identifier = (binary_expression "*puVar21 - iVar7" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar7) {\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }\n      else {\nLAB_000446e4:\n        iVar7 = 0;\n      }" if (parenthesized_expression "(uVar26 < (uint)-iVar7)" ( (binary_expression "uVar26 < (uint)-iVar7" identifier < (binary_expression "(uint)-iVar7" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }\nLAB_000446b8:\n        iVar7 = 1;\n      }" { (if_statement "if (1 < (int)B) {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          goto LAB_000446e4;\n        }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_000446b8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000446b8;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar40 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_000446b8;\n                uVar26 = *puVar40;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar40 = uVar26 + 1;\n                puVar40 = puVar40 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_000446b8;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 + 1;" (assignment_expression "*puVar40 = uVar26 + 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_000446e4;" goto statement_identifier ;) })) (labeled_statement "LAB_000446b8:\n        iVar7 = 1;" statement_identifier : (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000446e4:\n        iVar7 = 0;\n      }" else (compound_statement "{\nLAB_000446e4:\n        iVar7 = 0;\n      }" { (labeled_statement "LAB_000446e4:\n        iVar7 = 0;" statement_identifier : (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar21 + iVar36) = iVar7;" (assignment_expression "*(int *)((int)puVar21 + iVar36) = iVar7" (pointer_expression "*(int *)((int)puVar21 + iVar36)" * (cast_expression "(int *)((int)puVar21 + iVar36)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar36)" ( (binary_expression "(int)puVar21 + iVar36" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) }) (else_clause "else {\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }" else (compound_statement "{\n    puVar25 = (undefined4 *)(Mp + k * 4);\n    iVar36 = K >> 1;\n    iVar37 = l * 4;\n    piVar32 = (int *)*puVar25;\n    iVar7 = K >> 2;\n    if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }\nLAB_000442ec:\n    iVar7 = 0;\n    ppmVar16 = Bp;\n    do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);\n  }" { (expression_statement "puVar25 = (undefined4 *)(Mp + k * 4);" (assignment_expression "puVar25 = (undefined4 *)(Mp + k * 4)" identifier = (cast_expression "(undefined4 *)(Mp + k * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(Mp + k * 4)" ( (binary_expression "Mp + k * 4" identifier + (binary_expression "k * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar36 = K >> 1;" (assignment_expression "iVar36 = K >> 1" identifier = (binary_expression "K >> 1" identifier >> number_literal)) ;) (expression_statement "iVar37 = l * 4;" (assignment_expression "iVar37 = l * 4" identifier = (binary_expression "l * 4" identifier * number_literal)) ;) (expression_statement "piVar32 = (int *)*puVar25;" (assignment_expression "piVar32 = (int *)*puVar25" identifier = (cast_expression "(int *)*puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (expression_statement "iVar7 = K >> 2;" (assignment_expression "iVar7 = K >> 2" identifier = (binary_expression "K >> 2" identifier >> number_literal)) ;) (if_statement "if (iVar36 == 2) {\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }\n    else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }" if (parenthesized_expression "(iVar36 == 2)" ( (binary_expression "iVar36 == 2" identifier == number_literal) )) (compound_statement "{\n      pmVar29 = *Ap;\n      if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }\n      iVar12 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);\n      puVar21 = *Ap;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_00043604:\n      pmVar29 = Ap[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);\n      iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);\n      puVar21 = Ap[1];\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_000437b8:\n      iVar38 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      ppmVar16 = Ap;\n      do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\n      if (iVar36 != 2) goto LAB_0004555c;\n      pmVar29 = *Bp;\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }\n      iVar37 = (int)B + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);\n      puVar21 = *Bp;\n      puVar40 = (uint *)((int)puVar21 + iVar22);\n      if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }\nLAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\nLAB_0004413c:\n      pmVar29 = Bp[1];\n      if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }\n      ppiVar20 = (int **)((int)fft_l + iVar22);\n      (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);\n      iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);\n      puVar21 = Bp[1];\n      uVar26 = *(uint *)((int)puVar21 + iVar22);\n      uVar30 = uVar26 - 1;\n      if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }\n      if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }\n    }" { (expression_statement "pmVar29 = *Ap;" (assignment_expression "pmVar29 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (if_statement "if (B == (mp_ptr)0xffffffff) {\n        iVar22 = -4;\n      }\n      else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }" if (parenthesized_expression "(B == (mp_ptr)0xffffffff)" ( (binary_expression "B == (mp_ptr)0xffffffff" identifier == (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        iVar22 = -4;\n      }" { (expression_statement "iVar22 = -4;" (assignment_expression "iVar22 = -4" identifier = number_literal) ;) }) (else_clause "else {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }" else (compound_statement "{\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }\n      }" { (expression_statement "piVar33 = (int *)*pmVar29;" (assignment_expression "piVar33 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B == (mp_ptr)0x0) {\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }" if (parenthesized_expression "(B == (mp_ptr)0x0)" ( (binary_expression "B == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          iVar22 = 0;\n          *fft_l = piVar33;\n        }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (expression_statement "*fft_l = piVar33;" (assignment_expression "*fft_l = piVar33" (pointer_expression "*fft_l" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }" else (compound_statement "{\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          iVar22 = (int)B * 4;\n          fft_l[(int)B] = piVar33;\n        }" { (do_statement "do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          }" { (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar33 = (int *)pmVar3[1];" (assignment_expression "piVar33 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "iVar22 = (int)B * 4;" (assignment_expression "iVar22 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "fft_l[(int)B] = piVar33;" (assignment_expression "fft_l[(int)B] = piVar33" (subscript_expression "fft_l[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar12 = (int)B + 1;" (assignment_expression "iVar12 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[2],iVar12)" (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 "(pmVar29,pmVar29,Ap[2],iVar12)" ( identifier , identifier , (subscript_expression "Ap[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[2],fft_l,Ap[2],iVar12)" (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 "(Ap[2],fft_l,Ap[2],iVar12)" ( (subscript_expression "Ap[2]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = *Ap;" (assignment_expression "puVar21 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (expression_statement "puVar40 = (uint *)((int)puVar21 + iVar22);" (assignment_expression "puVar40 = (uint *)((int)puVar21 + iVar22)" identifier = (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" if (parenthesized_expression "(1 < *puVar40)" ( (binary_expression "1 < *puVar40" number_literal < (pointer_expression "*puVar40" * identifier)) )) (compound_statement "{\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = *puVar40 - 1;" (assignment_expression "uVar26 = *puVar40 - 1" identifier = (binary_expression "*puVar40 - 1" (pointer_expression "*puVar40" * identifier) - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004355c:\n            *puVar40 = 0;\n            goto LAB_00043564;\n          }" { (labeled_statement "LAB_0004355c:\n            *puVar40 = 0;" statement_identifier : (expression_statement "*puVar40 = 0;" (assignment_expression "*puVar40 = 0" (pointer_expression "*puVar40" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043564;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_0004355c;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_0004355c;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_0004355c;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_0004355c;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar40 = 1;" (assignment_expression "*puVar40 = 1" (pointer_expression "*puVar40" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00043564:\n      if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" statement_identifier : (if_statement "if (iVar38 != 0) {\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar21 = Ap[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" { (expression_statement "puVar21 = Ap[2];" (assignment_expression "puVar21 = Ap[2]" identifier = (subscript_expression "Ap[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = (int *)((int)puVar21 + iVar22);" (assignment_expression "piVar33 = (int *)((int)puVar21 + iVar22)" identifier = (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar38 = *piVar33;" (assignment_expression "iVar38 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar38;" (assignment_expression "uVar26 = *puVar21 - iVar38" identifier = (binary_expression "*puVar21 - iVar38" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar26 < (uint)-iVar38)" ( (binary_expression "uVar26 < (uint)-iVar38" identifier < (binary_expression "(uint)-iVar38" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000435f8:\n            *piVar33 = 1;\n            goto LAB_00043604;\n          }" { (labeled_statement "LAB_000435f8:\n            *piVar33 = 1;" statement_identifier : (expression_statement "*piVar33 = 1;" (assignment_expression "*piVar33 = 1" (pointer_expression "*piVar33" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043604;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_000435f8;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000435f8;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_000435f8;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_000435f8;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar33 = 0;" (assignment_expression "*piVar33 = 0" (pointer_expression "*piVar33" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_00043604:\n      pmVar29 = Ap[1];" statement_identifier : (expression_statement "pmVar29 = Ap[1];" (assignment_expression "pmVar29 = Ap[1]" identifier = (subscript_expression "Ap[1]" identifier [ number_literal ])) ;)) (if_statement "if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }" { (expression_statement "piVar33 = (int *)*pmVar29;" (assignment_expression "piVar33 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }" { (do_statement "do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          }" { (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar33 = (int *)pmVar3[1];" (assignment_expression "piVar33 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar22);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar22)" identifier = (cast_expression "(int **)((int)fft_l + iVar22)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar22)" ( (binary_expression "(int)fft_l + iVar22" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) })) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar22);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar22)" identifier = (cast_expression "(int **)((int)fft_l + iVar22)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar22)" ( (binary_expression "(int)fft_l + iVar22" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[3],iVar12)" (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 "(pmVar29,pmVar29,Ap[3],iVar12)" ( identifier , identifier , (subscript_expression "Ap[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[3],fft_l,Ap[3],iVar12)" (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 "(Ap[3],fft_l,Ap[3],iVar12)" ( (subscript_expression "Ap[3]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = Ap[1];" (assignment_expression "puVar21 = Ap[1]" identifier = (subscript_expression "Ap[1]" identifier [ number_literal ])) ;) (expression_statement "puVar40 = (uint *)((int)puVar21 + iVar22);" (assignment_expression "puVar40 = (uint *)((int)puVar21 + iVar22)" identifier = (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" if (parenthesized_expression "(1 < *puVar40)" ( (binary_expression "1 < *puVar40" number_literal < (pointer_expression "*puVar40" * identifier)) )) (compound_statement "{\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = *puVar40 - 1;" (assignment_expression "uVar26 = *puVar40 - 1" identifier = (binary_expression "*puVar40 - 1" (pointer_expression "*puVar40" * identifier) - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00043714:\n            *puVar40 = 0;\n            goto LAB_0004371c;\n          }" { (labeled_statement "LAB_00043714:\n            *puVar40 = 0;" statement_identifier : (expression_statement "*puVar40 = 0;" (assignment_expression "*puVar40 = 0" (pointer_expression "*puVar40" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004371c;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_00043714;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00043714;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00043714;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00043714;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar40 = 1;" (assignment_expression "*puVar40 = 1" (pointer_expression "*puVar40" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004371c:\n      if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" statement_identifier : (if_statement "if (iVar38 != 0) {\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar21 = Ap[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar38 = *piVar33;\n        uVar26 = *puVar21 - iVar38;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" { (expression_statement "puVar21 = Ap[3];" (assignment_expression "puVar21 = Ap[3]" identifier = (subscript_expression "Ap[3]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = (int *)((int)puVar21 + iVar22);" (assignment_expression "piVar33 = (int *)((int)puVar21 + iVar22)" identifier = (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar38 = *piVar33;" (assignment_expression "iVar38 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar38;" (assignment_expression "uVar26 = *puVar21 - iVar38" identifier = (binary_expression "*puVar21 - iVar38" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar38) {\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar26 < (uint)-iVar38)" ( (binary_expression "uVar26 < (uint)-iVar38" identifier < (binary_expression "(uint)-iVar38" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000437ac:\n            *piVar33 = 1;\n            goto LAB_000437b8;\n          }" { (labeled_statement "LAB_000437ac:\n            *piVar33 = 1;" statement_identifier : (expression_statement "*piVar33 = 1;" (assignment_expression "*piVar33 = 1" (pointer_expression "*piVar33" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000437b8;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_000437ac;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000437ac;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000437ac;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000437ac;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar33 = 0;" (assignment_expression "*piVar33 = 0" (pointer_expression "*piVar33" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_000437b8:\n      iVar38 = 0;" statement_identifier : (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "ppmVar16 = Ap;" (assignment_expression "ppmVar16 = Ap" identifier = identifier) ;) (do_statement "do {\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      } while (iVar38 < iVar36);" do (compound_statement "{\n        (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n        puVar21 = ppmVar16[1];\n        piVar33 = *ppiVar20;\n        iVar43 = *(int *)((int)*ppmVar16 + iVar22);\n        iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n        iVar13 = iVar43 - ((int)piVar33 + iVar12);\n        uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;\n        *(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar26 + uVar30;\n        if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }\n        piVar33 = *ppiVar20;\n        iVar12 = *(int *)((int)puVar21 + iVar22);\n        iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n        iVar12 = (int)piVar33 + iVar13 + iVar12;\n        uVar26 = iVar12 - 1;\n        if (iVar12 == 0) {\n          uVar26 = 0;\n        }\n        *(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;\n        uVar30 = *puVar21;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }\n        iVar38 = iVar38 + 1;\n        piVar32 = piVar32 + 2;\n        ppmVar16 = ppmVar16 + 2;\n      }" { (expression_statement "(*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);" (call_expression "(*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(fft_l,ppmVar16[1],local_70 * *piVar32,B)" ( identifier , (subscript_expression "ppmVar16[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar32" identifier * (pointer_expression "*piVar32" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[1];" (assignment_expression "puVar21 = ppmVar16[1]" identifier = (subscript_expression "ppmVar16[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = *ppiVar20;" (assignment_expression "piVar33 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar43 = *(int *)((int)*ppmVar16 + iVar22);" (assignment_expression "iVar43 = *(int *)((int)*ppmVar16 + iVar22)" identifier = (pointer_expression "*(int *)((int)*ppmVar16 + iVar22)" * (cast_expression "(int *)((int)*ppmVar16 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppmVar16 + iVar22)" ( (binary_expression "(int)*ppmVar16 + iVar22" (cast_expression "(int)*ppmVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppmVar16" * identifier)) + identifier) ))))) ;) (expression_statement "iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar13 = iVar43 - ((int)piVar33 + iVar12);" (assignment_expression "iVar13 = iVar43 - ((int)piVar33 + iVar12)" identifier = (binary_expression "iVar43 - ((int)piVar33 + iVar12)" identifier - (parenthesized_expression "((int)piVar33 + iVar12)" ( (binary_expression "(int)piVar33 + iVar12" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43;" (assignment_expression "uVar26 = iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43" identifier = (binary_expression "iVar13 >> 0x1f & ((int)piVar33 + iVar12) - iVar43" (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar33 + iVar12) - iVar43" (parenthesized_expression "((int)piVar33 + iVar12)" ( (binary_expression "(int)piVar33 + iVar12" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar22) = iVar13 + uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar22)" * (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar13 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }\n        else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n          do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);\n          puVar21 = *ppmVar16;\n        }" { (do_statement "do {\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          } while (uVar26 + 1 == 0);" do (compound_statement "{\n            uVar26 = puVar21[1] + 1;\n            puVar21[1] = uVar26;\n            if (uVar26 != 0) goto LAB_000437d8;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 + 1;\n          }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_000437d8;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000437d8;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }" else (compound_statement "{\nLAB_000437d8:\n          puVar21 = *ppmVar16;\n        }" { (labeled_statement "LAB_000437d8:\n          puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar33 = *ppiVar20;" (assignment_expression "piVar33 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar12 = *(int *)((int)puVar21 + iVar22);" (assignment_expression "iVar12 = *(int *)((int)puVar21 + iVar22)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar22)" * (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar12 = (int)piVar33 + iVar13 + iVar12;" (assignment_expression "iVar12 = (int)piVar33 + iVar13 + iVar12" identifier = (binary_expression "(int)piVar33 + iVar13 + iVar12" (binary_expression "(int)piVar33 + iVar13" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar12 - 1;" (assignment_expression "uVar26 = iVar12 - 1" identifier = (binary_expression "iVar12 - 1" identifier - number_literal)) ;) (if_statement "if (iVar12 == 0) {\n          uVar26 = 0;\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar26 = 0;\n        }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar21 + iVar22) = iVar12 - uVar26;" (assignment_expression "*(int *)((int)puVar21 + iVar22) = iVar12 - uVar26" (pointer_expression "*(int *)((int)puVar21 + iVar22)" * (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar12 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n          do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);\n        }" { (do_statement "do {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          } while (uVar26 == 0);" do (compound_statement "{\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 != 0) break;\n            puVar21 = puVar21 + 2;\n            uVar26 = *puVar21;\n            *puVar21 = uVar26 - 1;\n          }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "piVar32 = piVar32 + 2;" (assignment_expression "piVar32 = piVar32 + 2" identifier = (binary_expression "piVar32 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 2;" (assignment_expression "ppmVar16 = ppmVar16 + 2" identifier = (binary_expression "ppmVar16 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar38 < iVar36)" ( (binary_expression "iVar38 < iVar36" identifier < identifier) )) ;) (if_statement "if (T != (mp_ptr)0x0) goto LAB_000427e4;" if (parenthesized_expression "(T != (mp_ptr)0x0)" ( (binary_expression "T != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;)) (expression_statement "piVar32 = (int *)*puVar25;" (assignment_expression "piVar32 = (int *)*puVar25" identifier = (cast_expression "(int *)*puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (if_statement "if (iVar36 != 2) goto LAB_0004555c;" if (parenthesized_expression "(iVar36 != 2)" ( (binary_expression "iVar36 != 2" identifier != number_literal) )) (goto_statement "goto LAB_0004555c;" goto statement_identifier ;)) (expression_statement "pmVar29 = *Bp;" (assignment_expression "pmVar29 = *Bp" identifier = (pointer_expression "*Bp" * identifier)) ;) (if_statement "if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        piVar33 = (int *)*pmVar29;\n        pmVar6 = B;\n        ppiVar20 = fft_l;\n        pmVar3 = pmVar29;\n        if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }\n      }" { (expression_statement "piVar33 = (int *)*pmVar29;" (assignment_expression "piVar33 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B == (mp_ptr)0x0) {\n          *fft_l = piVar33;\n        }\n        else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }" if (parenthesized_expression "(B == (mp_ptr)0x0)" ( (binary_expression "B == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          *fft_l = piVar33;\n        }" { (expression_statement "*fft_l = piVar33;" (assignment_expression "*fft_l = piVar33" (pointer_expression "*fft_l" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }" else (compound_statement "{\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          *(int **)((int)fft_l + iVar22) = piVar33;\n        }" { (do_statement "do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          }" { (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar33 = (int *)pmVar3[1];" (assignment_expression "piVar33 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "*(int **)((int)fft_l + iVar22) = piVar33;" (assignment_expression "*(int **)((int)fft_l + iVar22) = piVar33" (pointer_expression "*(int **)((int)fft_l + iVar22)" * (cast_expression "(int **)((int)fft_l + iVar22)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar22)" ( (binary_expression "(int)fft_l + iVar22" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar37 = (int)B + 1;" (assignment_expression "iVar37 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[2],iVar37)" (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 "(pmVar29,pmVar29,Bp[2],iVar37)" ( identifier , identifier , (subscript_expression "Bp[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Bp[2],fft_l,Bp[2],iVar37)" (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 "(Bp[2],fft_l,Bp[2],iVar37)" ( (subscript_expression "Bp[2]" identifier [ number_literal ]) , identifier , (subscript_expression "Bp[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = *Bp;" (assignment_expression "puVar21 = *Bp" identifier = (pointer_expression "*Bp" * identifier)) ;) (expression_statement "puVar40 = (uint *)((int)puVar21 + iVar22);" (assignment_expression "puVar40 = (uint *)((int)puVar21 + iVar22)" identifier = (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar40) {\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" if (parenthesized_expression "(1 < *puVar40)" ( (binary_expression "1 < *puVar40" number_literal < (pointer_expression "*puVar40" * identifier)) )) (compound_statement "{\n        uVar30 = *puVar21;\n        uVar26 = *puVar40 - 1;\n        *puVar21 = uVar30 - uVar26;\n        if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }\n        *puVar40 = 1;\n      }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = *puVar40 - 1;" (assignment_expression "uVar26 = *puVar40 - 1" identifier = (binary_expression "*puVar40 - 1" (pointer_expression "*puVar40" * identifier) - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044098:\n            *puVar40 = 0;\n            goto LAB_000440a0;\n          }" { (labeled_statement "LAB_00044098:\n            *puVar40 = 0;" statement_identifier : (expression_statement "*puVar40 = 0;" (assignment_expression "*puVar40 = 0" (pointer_expression "*puVar40" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000440a0;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_00044098;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 - 1;\n            if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044098;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                if (B == pmVar29) goto LAB_00044098;\n                uVar26 = *puVar21;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                *puVar21 = uVar26 - 1;\n                puVar21 = puVar21 + 1;\n              }" { (if_statement "if (B == pmVar29) goto LAB_00044098;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar40 = 1;" (assignment_expression "*puVar40 = 1" (pointer_expression "*puVar40" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000440a0:\n      if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" statement_identifier : (if_statement "if (iVar7 != 0) {\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar21 = Bp[2];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" { (expression_statement "puVar21 = Bp[2];" (assignment_expression "puVar21 = Bp[2]" identifier = (subscript_expression "Bp[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = (int *)((int)puVar21 + iVar22);" (assignment_expression "piVar33 = (int *)((int)puVar21 + iVar22)" identifier = (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar7 = *piVar33;" (assignment_expression "iVar7 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar7;" (assignment_expression "uVar26 = *puVar21 - iVar7" identifier = (binary_expression "*puVar21 - iVar7" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar26 < (uint)-iVar7)" ( (binary_expression "uVar26 < (uint)-iVar7" identifier < (binary_expression "(uint)-iVar7" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044130:\n            *piVar33 = 1;\n            goto LAB_0004413c;\n          }" { (labeled_statement "LAB_00044130:\n            *piVar33 = 1;" statement_identifier : (expression_statement "*piVar33 = 1;" (assignment_expression "*piVar33 = 1" (pointer_expression "*piVar33" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004413c;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_00044130;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044130;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_00044130;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044130;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar33 = 0;" (assignment_expression "*piVar33 = 0" (pointer_expression "*piVar33" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_0004413c:\n      pmVar29 = Bp[1];" statement_identifier : (expression_statement "pmVar29 = Bp[1];" (assignment_expression "pmVar29 = Bp[1]" identifier = (subscript_expression "Bp[1]" identifier [ number_literal ])) ;)) (if_statement "if (B != (mp_ptr)0xffffffff) {\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        piVar33 = (int *)*pmVar29;\n        ppiVar20 = fft_l;\n        pmVar6 = B;\n        pmVar3 = pmVar29;\n        if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }\n        *ppiVar20 = piVar33;\n      }" { (expression_statement "piVar33 = (int *)*pmVar29;" (assignment_expression "piVar33 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);\n          ppiVar20 = (int **)((int)fft_l + iVar22);\n        }" { (do_statement "do {\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n            *ppiVar20 = piVar33;\n            pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n            piVar33 = (int *)pmVar3[1];\n            ppiVar20 = ppiVar20 + 1;\n            pmVar3 = pmVar3 + 1;\n          }" { (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar33 = (int *)pmVar3[1];" (assignment_expression "piVar33 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar22);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar22)" identifier = (cast_expression "(int **)((int)fft_l + iVar22)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar22)" ( (binary_expression "(int)fft_l + iVar22" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*ppiVar20 = piVar33;" (assignment_expression "*ppiVar20 = piVar33" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) })) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar22);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar22)" identifier = (cast_expression "(int **)((int)fft_l + iVar22)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar22)" ( (binary_expression "(int)fft_l + iVar22" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Bp[3],iVar37)" (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 "(pmVar29,pmVar29,Bp[3],iVar37)" ( identifier , identifier , (subscript_expression "Bp[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Bp[3],fft_l,Bp[3],iVar37)" (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 "(Bp[3],fft_l,Bp[3],iVar37)" ( (subscript_expression "Bp[3]" identifier [ number_literal ]) , identifier , (subscript_expression "Bp[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = Bp[1];" (assignment_expression "puVar21 = Bp[1]" identifier = (subscript_expression "Bp[1]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar22);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar22)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar22)" * (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar30 = uVar26 - 1;" (assignment_expression "uVar30 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar26) {\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar21;\n        *puVar21 = uVar26 - uVar30;\n        if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }\n        *(uint *)((int)puVar21 + iVar22) = uVar26;\n      }" { (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - uVar30;" (assignment_expression "*puVar21 = uVar26 - uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - uVar30" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar30) {\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }\n        else {\nLAB_00045a50:\n          uVar26 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar30)" ( (binary_expression "uVar26 < uVar30" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }\nLAB_00044248:\n          uVar26 = 0;\n        }" { (if_statement "if (1 < (int)B) {\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 - 1;\n            if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }\n            goto LAB_00045a50;\n          }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              if (B == (mp_ptr)0x2) goto LAB_00044248;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 - 1;\n              if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }\n            }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044248;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                pmVar29 = (mp_ptr)0x3;\n                puVar40 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);\n              }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                } while (uVar26 == 0);" do (compound_statement "{\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044248;\n                  uVar26 = *puVar40;\n                  *puVar40 = uVar26 - 1;\n                  puVar40 = puVar40 + 1;\n                }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044248;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a50;" goto statement_identifier ;) })) (labeled_statement "LAB_00044248:\n          uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a50:\n          uVar26 = 1;\n        }" else (compound_statement "{\nLAB_00045a50:\n          uVar26 = 1;\n        }" { (labeled_statement "LAB_00045a50:\n          uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar22) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar22) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar22)" * (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar7 != 0) {\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar21 = Bp[3];\n        piVar33 = (int *)((int)puVar21 + iVar22);\n        iVar7 = *piVar33;\n        uVar26 = *puVar21 - iVar7;\n        *puVar21 = uVar26;\n        if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }\n        *piVar33 = 0;\n      }" { (expression_statement "puVar21 = Bp[3];" (assignment_expression "puVar21 = Bp[3]" identifier = (subscript_expression "Bp[3]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = (int *)((int)puVar21 + iVar22);" (assignment_expression "piVar33 = (int *)((int)puVar21 + iVar22)" identifier = (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar7 = *piVar33;" (assignment_expression "iVar7 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar7;" (assignment_expression "uVar26 = *puVar21 - iVar7" identifier = (binary_expression "*puVar21 - iVar7" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar7) {\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar26 < (uint)-iVar7)" ( (binary_expression "uVar26 < (uint)-iVar7" identifier < (binary_expression "(uint)-iVar7" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)B < 2) {\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000442e0:\n            *piVar33 = 1;\n            goto LAB_000442ec;\n          }" { (labeled_statement "LAB_000442e0:\n            *piVar33 = 1;" statement_identifier : (expression_statement "*piVar33 = 1;" (assignment_expression "*piVar33 = 1" (pointer_expression "*piVar33" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000442ec;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (B == (mp_ptr)0x2) goto LAB_000442e0;\n            uVar26 = puVar21[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000442e0;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar29 = (mp_ptr)0x3;\n              puVar21 = puVar21 + 3;\n              do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                bVar1 = B == pmVar29;\n                pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                if (bVar1) goto LAB_000442e0;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n                puVar21 = puVar21 + 1;\n              }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000442e0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar33 = 0;" (assignment_expression "*piVar33 = 0" (pointer_expression "*piVar33" * identifier) = number_literal) ;) })) }) (else_clause "else {\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }" else (compound_statement "{\n      piVar33 = (int *)puVar25[-1];\n      iVar38 = l * 8;\n      iVar22 = K >> 3;\n      if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }\n      iVar22 = (int)B * 4;\n      if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }\n      if (T != (mp_ptr)0x0) goto LAB_000427e4;\n      piVar32 = (int *)*puVar25;\nLAB_0004555c:\n      iVar22 = l << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      ppiVar20 = (int **)(puVar25 + -2);\n      piVar33 = (int *)puVar25[-1];\n      mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);\n      ppmVar16 = Bp + 1;\n      (*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }\n      if (iVar36 < 1) goto LAB_000446c4;\n      iVar22 = (int)B * 4;\n      ppiVar20 = fft_l + (int)B;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n    }" { (expression_statement "piVar33 = (int *)puVar25[-1];" (assignment_expression "piVar33 = (int *)puVar25[-1]" identifier = (cast_expression "(int *)puVar25[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-1]" identifier [ number_literal ]))) ;) (expression_statement "iVar38 = l * 8;" (assignment_expression "iVar38 = l * 8" identifier = (binary_expression "l * 8" identifier * number_literal)) ;) (expression_statement "iVar22 = K >> 3;" (assignment_expression "iVar22 = K >> 3" identifier = (binary_expression "K >> 3" identifier >> number_literal)) ;) (if_statement "if (iVar7 == 2) {\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }\n      else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }" if (parenthesized_expression "(iVar7 == 2)" ( (binary_expression "iVar7 == 2" identifier == number_literal) )) (compound_statement "{\n        pmVar29 = *Ap;\n        if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }\n        iVar43 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);\n        puVar21 = *Ap;\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }\n        pmVar29 = Ap[2];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);\n        iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);\n        puVar21 = Ap[2];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_000448f4:\n        iVar13 = 0;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar16 = Ap;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);\n        piVar33 = (int *)puVar25[-1];\n        if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }\n        pmVar29 = Ap[1];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }\n        iVar22 = (int)B + 1;\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);\n        iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);\n        puVar21 = Ap[1];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_00044c60:\n        pmVar29 = Ap[3];\n        if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }\n        ppiVar20 = (int **)((int)fft_l + iVar12);\n        (*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);\n        iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);\n        puVar21 = Ap[3];\n        uVar26 = *(uint *)((int)puVar21 + iVar12);\n        uVar30 = uVar26 - 1;\n        if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }\n        if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }\nLAB_0004533c:\n        ppmVar16 = Ap + 1;\n        iVar22 = 0;\n        do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);\n      }" { (expression_statement "pmVar29 = *Ap;" (assignment_expression "pmVar29 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (if_statement "if (B == (mp_ptr)0xffffffff) {\n          iVar12 = -4;\n        }\n        else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }" if (parenthesized_expression "(B == (mp_ptr)0xffffffff)" ( (binary_expression "B == (mp_ptr)0xffffffff" identifier == (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          iVar12 = -4;\n        }" { (expression_statement "iVar12 = -4;" (assignment_expression "iVar12 = -4" identifier = number_literal) ;) }) (else_clause "else {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }" else (compound_statement "{\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }\n          *ppiVar20 = piVar41;\n        }" { (expression_statement "piVar41 = (int *)*pmVar29;" (assignment_expression "piVar41 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B == (mp_ptr)0x0) {\n            iVar12 = 0;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }" if (parenthesized_expression "(B == (mp_ptr)0x0)" ( (binary_expression "B == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            iVar12 = 0;\n          }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }" else (compound_statement "{\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            iVar12 = (int)B * 4;\n            ppiVar20 = fft_l + (int)B;\n          }" { (do_statement "do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            }" { (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar41 = (int *)pmVar3[1];" (assignment_expression "piVar41 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "iVar12 = (int)B * 4;" (assignment_expression "iVar12 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) }))) (expression_statement "iVar43 = (int)B + 1;" (assignment_expression "iVar43 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[4],iVar43)" (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 "(pmVar29,pmVar29,Ap[4],iVar43)" ( identifier , identifier , (subscript_expression "Ap[4]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[4],fft_l,Ap[4],iVar43)" (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 "(Ap[4],fft_l,Ap[4],iVar43)" ( (subscript_expression "Ap[4]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[4]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = *Ap;" (assignment_expression "puVar21 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar12);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459fc:\n            uVar26 = 1;\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }\nLAB_000423fc:\n            uVar26 = 0;\n          }" { (if_statement "if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459fc;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                if (B == (mp_ptr)0x2) goto LAB_000423fc;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000423fc;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);" do (compound_statement "{\n                    if (B == pmVar29) goto LAB_000423fc;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  }" { (if_statement "if (B == pmVar29) goto LAB_000423fc;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459fc;" goto statement_identifier ;) })) (labeled_statement "LAB_000423fc:\n            uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459fc:\n            uVar26 = 1;\n          }" else (compound_statement "{\nLAB_000459fc:\n            uVar26 = 1;\n          }" { (labeled_statement "LAB_000459fc:\n            uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar12) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar13 != 0) {\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = Ap[4];\n          iVar13 = *(int *)((int)puVar21 + iVar12);\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar13;\n        }" { (expression_statement "puVar21 = Ap[4];" (assignment_expression "puVar21 = Ap[4]" identifier = (subscript_expression "Ap[4]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = *(int *)((int)puVar21 + iVar12);" (assignment_expression "iVar13 = *(int *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = *puVar21 - iVar13;" (assignment_expression "uVar26 = *puVar21 - iVar13" identifier = (binary_expression "*puVar21 - iVar13" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar13) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }\n          else {\nLAB_00045a18:\n            iVar13 = 0;\n          }" if (parenthesized_expression "(uVar26 < (uint)-iVar13)" ( (binary_expression "uVar26 < (uint)-iVar13" identifier < (binary_expression "(uint)-iVar13" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }\nLAB_00042498:\n            iVar13 = 1;\n          }" { (if_statement "if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }\n              goto LAB_00045a18;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                if (B == (mp_ptr)0x2) goto LAB_00042498;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 + 1;\n                if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }\n              }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00042498;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);\n                }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 + 1 == 0);" do (compound_statement "{\n                    if (B == pmVar29) goto LAB_00042498;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 + 1;\n                    puVar40 = puVar40 + 1;\n                  }" { (if_statement "if (B == pmVar29) goto LAB_00042498;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 + 1;" (assignment_expression "*puVar40 = uVar26 + 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a18;" goto statement_identifier ;) })) (labeled_statement "LAB_00042498:\n            iVar13 = 1;" statement_identifier : (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a18:\n            iVar13 = 0;\n          }" else (compound_statement "{\nLAB_00045a18:\n            iVar13 = 0;\n          }" { (labeled_statement "LAB_00045a18:\n            iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar21 + iVar12) = iVar13;" (assignment_expression "*(int *)((int)puVar21 + iVar12) = iVar13" (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (expression_statement "pmVar29 = Ap[2];" (assignment_expression "pmVar29 = Ap[2]" identifier = (subscript_expression "Ap[2]" identifier [ number_literal ])) ;) (if_statement "if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }" { (expression_statement "piVar41 = (int *)*pmVar29;" (assignment_expression "piVar41 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }" { (do_statement "do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            }" { (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar41 = (int *)pmVar3[1];" (assignment_expression "piVar41 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar12);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar12)" identifier = (cast_expression "(int **)((int)fft_l + iVar12)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar12)" ( (binary_expression "(int)fft_l + iVar12" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) })) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar12);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar12)" identifier = (cast_expression "(int **)((int)fft_l + iVar12)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar12)" ( (binary_expression "(int)fft_l + iVar12" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[6],iVar43)" (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 "(pmVar29,pmVar29,Ap[6],iVar43)" ( identifier , identifier , (subscript_expression "Ap[6]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[6],fft_l,Ap[6],iVar43)" (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 "(Ap[6],fft_l,Ap[6],iVar43)" ( (subscript_expression "Ap[6]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[6]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = Ap[2];" (assignment_expression "puVar21 = Ap[2]" identifier = (subscript_expression "Ap[2]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar12);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }\n          else {\nLAB_000459f4:\n            uVar26 = 1;\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }\nLAB_000425b4:\n            uVar26 = 0;\n          }" { (if_statement "if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_000459f4;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                if (B == (mp_ptr)0x2) goto LAB_000425b4;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_000425b4;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);" do (compound_statement "{\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_000425b4;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000425b4;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459f4;" goto statement_identifier ;) })) (labeled_statement "LAB_000425b4:\n            uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459f4:\n            uVar26 = 1;\n          }" else (compound_statement "{\nLAB_000459f4:\n            uVar26 = 1;\n          }" { (labeled_statement "LAB_000459f4:\n            uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar12) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar13 != 0) {\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = Ap[6];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar13 = *piVar41;\n          uVar26 = *puVar21 - iVar13;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" { (expression_statement "puVar21 = Ap[6];" (assignment_expression "puVar21 = Ap[6]" identifier = (subscript_expression "Ap[6]" identifier [ number_literal ])) ;) (expression_statement "piVar41 = (int *)((int)puVar21 + iVar12);" (assignment_expression "piVar41 = (int *)((int)puVar21 + iVar12)" identifier = (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar13 = *piVar41;" (assignment_expression "iVar13 = *piVar41" identifier = (pointer_expression "*piVar41" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar13;" (assignment_expression "uVar26 = *puVar21 - iVar13" identifier = (binary_expression "*puVar21 - iVar13" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar13) {\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(uVar26 < (uint)-iVar13)" ( (binary_expression "uVar26 < (uint)-iVar13" identifier < (binary_expression "(uint)-iVar13" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n            if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" { (if_statement "if ((int)B < 2) {\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004264c:\n              *piVar41 = 1;\n              goto LAB_000448f4;\n            }" { (labeled_statement "LAB_0004264c:\n              *piVar41 = 1;" statement_identifier : (expression_statement "*piVar41 = 1;" (assignment_expression "*piVar41 = 1" (pointer_expression "*piVar41" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (B == (mp_ptr)0x2) goto LAB_0004264c;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_0004264c;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);" do (compound_statement "{\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_0004264c;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0004264c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar41 = 0;" (assignment_expression "*piVar41 = 0" (pointer_expression "*piVar41" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000448f4:\n        iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "ppmVar16 = Ap;" (assignment_expression "ppmVar16 = Ap" identifier = identifier) ;) (do_statement "do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar13 < iVar7);" do (compound_statement "{\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar44 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar31 = iVar44 - ((int)piVar41 + iVar43);\n          uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;\n          *(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)puVar21 + iVar12);\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar43 = (int)piVar41 + iVar31 + iVar43;\n          uVar26 = iVar43 - 1;\n          if (iVar43 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar13 = iVar13 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        }" { (expression_statement "(*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);" (call_expression "(*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(fft_l,ppmVar16[2],iVar37 * *piVar33,B)" ( identifier , (subscript_expression "ppmVar16[2]" identifier [ number_literal ]) , (binary_expression "iVar37 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[2];" (assignment_expression "puVar21 = ppmVar16[2]" identifier = (subscript_expression "ppmVar16[2]" identifier [ number_literal ])) ;) (expression_statement "piVar41 = *ppiVar20;" (assignment_expression "piVar41 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar44 = *(int *)((int)*ppmVar16 + iVar12);" (assignment_expression "iVar44 = *(int *)((int)*ppmVar16 + iVar12)" identifier = (pointer_expression "*(int *)((int)*ppmVar16 + iVar12)" * (cast_expression "(int *)((int)*ppmVar16 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppmVar16 + iVar12)" ( (binary_expression "(int)*ppmVar16 + iVar12" (cast_expression "(int)*ppmVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppmVar16" * identifier)) + identifier) ))))) ;) (expression_statement "iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar43 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar31 = iVar44 - ((int)piVar41 + iVar43);" (assignment_expression "iVar31 = iVar44 - ((int)piVar41 + iVar43)" identifier = (binary_expression "iVar44 - ((int)piVar41 + iVar43)" identifier - (parenthesized_expression "((int)piVar41 + iVar43)" ( (binary_expression "(int)piVar41 + iVar43" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44;" (assignment_expression "uVar26 = iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44" identifier = (binary_expression "iVar31 >> 0x1f & ((int)piVar41 + iVar43) - iVar44" (binary_expression "iVar31 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar41 + iVar43) - iVar44" (parenthesized_expression "((int)piVar41 + iVar43)" ( (binary_expression "(int)piVar41 + iVar43" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = iVar31 + uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar31 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }" { (do_statement "do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00044910;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_00044910;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044910;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }" else (compound_statement "{\nLAB_00044910:\n            puVar21 = *ppmVar16;\n          }" { (labeled_statement "LAB_00044910:\n            puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar41 = *ppiVar20;" (assignment_expression "piVar41 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar43 = *(int *)((int)puVar21 + iVar12);" (assignment_expression "iVar43 = *(int *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar43 = (int)piVar41 + iVar31 + iVar43;" (assignment_expression "iVar43 = (int)piVar41 + iVar31 + iVar43" identifier = (binary_expression "(int)piVar41 + iVar31 + iVar43" (binary_expression "(int)piVar41 + iVar31" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar43 - 1;" (assignment_expression "uVar26 = iVar43 - 1" identifier = (binary_expression "iVar43 - 1" identifier - number_literal)) ;) (if_statement "if (iVar43 == 0) {\n            uVar26 = 0;\n          }" if (parenthesized_expression "(iVar43 == 0)" ( (binary_expression "iVar43 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar26 = 0;\n          }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar21 + iVar12) = iVar43 - uVar26;" (assignment_expression "*(int *)((int)puVar21 + iVar12) = iVar43 - uVar26" (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar43 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" { (do_statement "do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 4;" (assignment_expression "ppmVar16 = ppmVar16 + 4" identifier = (binary_expression "ppmVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < iVar7)" ( (binary_expression "iVar13 < iVar7" identifier < identifier) )) ;) (expression_statement "piVar33 = (int *)puVar25[-1];" (assignment_expression "piVar33 = (int *)puVar25[-1]" identifier = (cast_expression "(int *)puVar25[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar7 != 2) {\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }" if (parenthesized_expression "(iVar7 != 2)" ( (binary_expression "iVar7 != 2" identifier != number_literal) )) (compound_statement "{\n          local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n          goto LAB_00044f40;\n        }" { (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00044f40;" goto statement_identifier ;) })) (expression_statement "pmVar29 = Ap[1];" (assignment_expression "pmVar29 = Ap[1]" identifier = (subscript_expression "Ap[1]" identifier [ number_literal ])) ;) (if_statement "if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          piVar41 = (int *)*pmVar29;\n          pmVar6 = B;\n          ppiVar20 = fft_l;\n          pmVar3 = pmVar29;\n          if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }\n        }" { (expression_statement "piVar41 = (int *)*pmVar29;" (assignment_expression "piVar41 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B == (mp_ptr)0x0) {\n            *fft_l = piVar41;\n          }\n          else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }" if (parenthesized_expression "(B == (mp_ptr)0x0)" ( (binary_expression "B == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            *fft_l = piVar41;\n          }" { (expression_statement "*fft_l = piVar41;" (assignment_expression "*fft_l = piVar41" (pointer_expression "*fft_l" * identifier) = identifier) ;) }) (else_clause "else {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }" else (compound_statement "{\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            *(int **)((int)fft_l + iVar12) = piVar41;\n          }" { (do_statement "do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            }" { (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar41 = (int *)pmVar3[1];" (assignment_expression "piVar41 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "*(int **)((int)fft_l + iVar12) = piVar41;" (assignment_expression "*(int **)((int)fft_l + iVar12) = piVar41" (pointer_expression "*(int **)((int)fft_l + iVar12)" * (cast_expression "(int **)((int)fft_l + iVar12)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar12)" ( (binary_expression "(int)fft_l + iVar12" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar22 = (int)B + 1;" (assignment_expression "iVar22 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],iVar22);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[5],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 "(pmVar29,pmVar29,Ap[5],iVar22)" ( identifier , identifier , (subscript_expression "Ap[5]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[5],fft_l,Ap[5],iVar22)" (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 "(Ap[5],fft_l,Ap[5],iVar22)" ( (subscript_expression "Ap[5]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[5]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = Ap[1];" (assignment_expression "puVar21 = Ap[1]" identifier = (subscript_expression "Ap[1]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar12);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar26) {\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n          uVar30 = *puVar21;\n          uVar26 = uVar26 - 1;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" { (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }\n          else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }\nLAB_00044bb8:\n            uVar26 = 0;\n          }" { (if_statement "if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto FUN_00044e0c;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                if (B == (mp_ptr)0x2) goto LAB_00044bb8;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044bb8;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);" do (compound_statement "{\n                    if (B == pmVar29) goto LAB_00044bb8;\n                    uVar26 = *puVar40;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  }" { (if_statement "if (B == pmVar29) goto LAB_00044bb8;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto FUN_00044e0c;" goto statement_identifier ;) })) (labeled_statement "LAB_00044bb8:\n            uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nFUN_00044e0c:\n            uVar26 = 1;\n          }" else (compound_statement "{\nFUN_00044e0c:\n            uVar26 = 1;\n          }" { (labeled_statement "FUN_00044e0c:\n            uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar12) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar38 != 0) {\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = Ap[5];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar38 = *piVar41;\n          uVar26 = *puVar21 - iVar38;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" { (expression_statement "puVar21 = Ap[5];" (assignment_expression "puVar21 = Ap[5]" identifier = (subscript_expression "Ap[5]" identifier [ number_literal ])) ;) (expression_statement "piVar41 = (int *)((int)puVar21 + iVar12);" (assignment_expression "piVar41 = (int *)((int)puVar21 + iVar12)" identifier = (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar38 = *piVar41;" (assignment_expression "iVar38 = *piVar41" identifier = (pointer_expression "*piVar41" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar38;" (assignment_expression "uVar26 = *puVar21 - iVar38" identifier = (binary_expression "*puVar21 - iVar38" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar38) {\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(uVar26 < (uint)-iVar38)" ( (binary_expression "uVar26 < (uint)-iVar38" identifier < (binary_expression "(uint)-iVar38" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n            if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" { (if_statement "if ((int)B < 2) {\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044c54:\n              *piVar41 = 1;\n              goto LAB_00044c60;\n            }" { (labeled_statement "LAB_00044c54:\n              *piVar41 = 1;" statement_identifier : (expression_statement "*piVar41 = 1;" (assignment_expression "*piVar41 = 1" (pointer_expression "*piVar41" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00044c60;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (B == (mp_ptr)0x2) goto LAB_00044c54;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044c54;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);" do (compound_statement "{\n                  if (B == pmVar29) goto LAB_00044c54;\n                  uVar26 = *puVar21;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                }" { (if_statement "if (B == pmVar29) goto LAB_00044c54;" if (parenthesized_expression "(B == pmVar29)" ( (binary_expression "B == pmVar29" identifier == identifier) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar41 = 0;" (assignment_expression "*piVar41 = 0" (pointer_expression "*piVar41" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00044c60:\n        pmVar29 = Ap[3];" statement_identifier : (expression_statement "pmVar29 = Ap[3];" (assignment_expression "pmVar29 = Ap[3]" identifier = (subscript_expression "Ap[3]" identifier [ number_literal ])) ;)) (if_statement "if (B != (mp_ptr)0xffffffff) {\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          piVar41 = (int *)*pmVar29;\n          ppiVar20 = fft_l;\n          pmVar6 = B;\n          pmVar3 = pmVar29;\n          if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }\n          *ppiVar20 = piVar41;\n        }" { (expression_statement "piVar41 = (int *)*pmVar29;" (assignment_expression "piVar41 = (int *)*pmVar29" identifier = (cast_expression "(int *)*pmVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar29" * identifier))) ;) (expression_statement "ppiVar20 = fft_l;" (assignment_expression "ppiVar20 = fft_l" identifier = identifier) ;) (expression_statement "pmVar6 = B;" (assignment_expression "pmVar6 = B" identifier = identifier) ;) (expression_statement "pmVar3 = pmVar29;" (assignment_expression "pmVar3 = pmVar29" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);\n            ppiVar20 = (int **)((int)fft_l + iVar12);\n          }" { (do_statement "do {\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            } while (pmVar6 != (mp_ptr)0x0);" do (compound_statement "{\n              *ppiVar20 = piVar41;\n              pmVar6 = (mp_ptr)((int)pmVar6 + -1);\n              piVar41 = (int *)pmVar3[1];\n              ppiVar20 = ppiVar20 + 1;\n              pmVar3 = pmVar3 + 1;\n            }" { (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) (expression_statement "pmVar6 = (mp_ptr)((int)pmVar6 + -1);" (assignment_expression "pmVar6 = (mp_ptr)((int)pmVar6 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar6 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar6 + -1)" ( (binary_expression "(int)pmVar6 + -1" (cast_expression "(int)pmVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar41 = (int *)pmVar3[1];" (assignment_expression "piVar41 = (int *)pmVar3[1]" identifier = (cast_expression "(int *)pmVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "ppiVar20 = ppiVar20 + 1;" (assignment_expression "ppiVar20 = ppiVar20 + 1" identifier = (binary_expression "ppiVar20 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar6 != (mp_ptr)0x0)" ( (binary_expression "pmVar6 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar12);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar12)" identifier = (cast_expression "(int **)((int)fft_l + iVar12)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar12)" ( (binary_expression "(int)fft_l + iVar12" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*ppiVar20 = piVar41;" (assignment_expression "*ppiVar20 = piVar41" (pointer_expression "*ppiVar20" * identifier) = identifier) ;) })) (expression_statement "ppiVar20 = (int **)((int)fft_l + iVar12);" (assignment_expression "ppiVar20 = (int **)((int)fft_l + iVar12)" identifier = (cast_expression "(int **)((int)fft_l + iVar12)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + iVar12)" ( (binary_expression "(int)fft_l + iVar12" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],iVar22);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar29,pmVar29,Ap[7],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 "(pmVar29,pmVar29,Ap[7],iVar22)" ( identifier , identifier , (subscript_expression "Ap[7]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(Ap[7],fft_l,Ap[7],iVar22)" (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 "(Ap[7],fft_l,Ap[7],iVar22)" ( (subscript_expression "Ap[7]" identifier [ number_literal ]) , identifier , (subscript_expression "Ap[7]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar21 = Ap[3];" (assignment_expression "puVar21 = Ap[3]" identifier = (subscript_expression "Ap[3]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = *(uint *)((int)puVar21 + iVar12);" (assignment_expression "uVar26 = *(uint *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar30 = uVar26 - 1;" (assignment_expression "uVar30 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar26) {\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" if (parenthesized_expression "(1 < uVar26)" ( (binary_expression "1 < uVar26" number_literal < identifier) )) (compound_statement "{\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - uVar30;\n          if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }\n          *(uint *)((int)puVar21 + iVar12) = uVar26;\n        }" { (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - uVar30;" (assignment_expression "*puVar21 = uVar26 - uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - uVar30" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar30) {\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }\n          else {\nLAB_00045a04:\n            uVar26 = 1;\n          }" if (parenthesized_expression "(uVar26 < uVar30)" ( (binary_expression "uVar26 < uVar30" identifier < identifier) )) (compound_statement "{\n            if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }\nLAB_00044d6c:\n            uVar26 = 0;\n          }" { (if_statement "if (1 < (int)B) {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }\n              goto LAB_00045a04;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                if (B == (mp_ptr)0x2) goto LAB_00044d6c;\n                uVar26 = puVar21[2];\n                puVar21[2] = uVar26 - 1;\n                if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }\n              }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044d6c;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 - 1;" (assignment_expression "puVar21[2] = uVar26 - 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 == 0) {\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                  pmVar29 = (mp_ptr)0x3;\n                  puVar40 = puVar21 + 3;\n                  do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);\n                }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar40 = puVar21 + 3;" (assignment_expression "puVar40 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  } while (uVar26 == 0);" do (compound_statement "{\n                    bVar1 = B == pmVar29;\n                    pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                    if (bVar1) goto LAB_00044d6c;\n                    uVar26 = *puVar40;\n                    *puVar40 = uVar26 - 1;\n                    puVar40 = puVar40 + 1;\n                  }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044d6c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar40;" (assignment_expression "uVar26 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "*puVar40 = uVar26 - 1;" (assignment_expression "*puVar40 = uVar26 - 1" (pointer_expression "*puVar40" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (expression_statement "puVar40 = puVar40 + 1;" (assignment_expression "puVar40 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a04;" goto statement_identifier ;) })) (labeled_statement "LAB_00044d6c:\n            uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a04:\n            uVar26 = 1;\n          }" else (compound_statement "{\nLAB_00045a04:\n            uVar26 = 1;\n          }" { (labeled_statement "LAB_00045a04:\n            uVar26 = 1;" statement_identifier : (expression_statement "uVar26 = 1;" (assignment_expression "uVar26 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar21 + iVar12) = uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar22 != 0) {\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = Ap[7];\n          piVar41 = (int *)((int)puVar21 + iVar12);\n          iVar22 = *piVar41;\n          uVar26 = *puVar21 - iVar22;\n          *puVar21 = uVar26;\n          if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }\n          *piVar41 = 0;\n        }" { (expression_statement "puVar21 = Ap[7];" (assignment_expression "puVar21 = Ap[7]" identifier = (subscript_expression "Ap[7]" identifier [ number_literal ])) ;) (expression_statement "piVar41 = (int *)((int)puVar21 + iVar12);" (assignment_expression "piVar41 = (int *)((int)puVar21 + iVar12)" identifier = (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar22 = *piVar41;" (assignment_expression "iVar22 = *piVar41" identifier = (pointer_expression "*piVar41" * identifier)) ;) (expression_statement "uVar26 = *puVar21 - iVar22;" (assignment_expression "uVar26 = *puVar21 - iVar22" identifier = (binary_expression "*puVar21 - iVar22" (pointer_expression "*puVar21" * identifier) - identifier)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (if_statement "if (uVar26 < (uint)-iVar22) {\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(uVar26 < (uint)-iVar22)" ( (binary_expression "uVar26 < (uint)-iVar22" identifier < (binary_expression "(uint)-iVar22" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n            if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }\n            uVar26 = puVar21[1];\n            puVar21[1] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }\n          }" { (if_statement "if ((int)B < 2) {\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }" if (parenthesized_expression "((int)B < 2)" ( (binary_expression "(int)B < 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044e00:\n              *piVar41 = 1;\n              goto LAB_0004533c;\n            }" { (labeled_statement "LAB_00044e00:\n              *piVar41 = 1;" statement_identifier : (expression_statement "*piVar41 = 1;" (assignment_expression "*piVar41 = 1" (pointer_expression "*piVar41" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (B == (mp_ptr)0x2) goto LAB_00044e00;\n              uVar26 = puVar21[2];\n              puVar21[2] = uVar26 + 1;\n              if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }\n            }" { (if_statement "if (B == (mp_ptr)0x2) goto LAB_00044e00;" if (parenthesized_expression "(B == (mp_ptr)0x2)" ( (binary_expression "B == (mp_ptr)0x2" identifier == (cast_expression "(mp_ptr)0x2" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar21[2];" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                pmVar29 = (mp_ptr)0x3;\n                puVar21 = puVar21 + 3;\n                do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);\n              }" { (expression_statement "pmVar29 = (mp_ptr)0x3;" (assignment_expression "pmVar29 = (mp_ptr)0x3" identifier = (cast_expression "(mp_ptr)0x3" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) (expression_statement "puVar21 = puVar21 + 3;" (assignment_expression "puVar21 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                } while (uVar26 + 1 == 0);" do (compound_statement "{\n                  bVar1 = B == pmVar29;\n                  pmVar29 = (mp_ptr)((int)pmVar29 + 1);\n                  if (bVar1) goto LAB_00044e00;\n                  uVar26 = *puVar21;\n                  *puVar21 = uVar26 + 1;\n                  puVar21 = puVar21 + 1;\n                }" { (expression_statement "bVar1 = B == pmVar29;" (assignment_expression "bVar1 = B == pmVar29" identifier = (binary_expression "B == pmVar29" identifier == identifier)) ;) (expression_statement "pmVar29 = (mp_ptr)((int)pmVar29 + 1);" (assignment_expression "pmVar29 = (mp_ptr)((int)pmVar29 + 1)" identifier = (call_expression "(mp_ptr)((int)pmVar29 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + 1)" ( (binary_expression "(int)pmVar29 + 1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044e00;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar41 = 0;" (assignment_expression "*piVar41 = 0" (pointer_expression "*piVar41" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004533c:\n        ppmVar16 = Ap + 1;" statement_identifier : (expression_statement "ppmVar16 = Ap + 1;" (assignment_expression "ppmVar16 = Ap + 1" identifier = (binary_expression "Ap + 1" identifier + number_literal)) ;)) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (iVar22 < iVar7);" do (compound_statement "{\n          (*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar16[2];\n          piVar41 = *ppiVar20;\n          iVar43 = *(int *)((int)*ppmVar16 + iVar12);\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar13 = iVar43 - ((int)piVar41 + iVar38);\n          uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;\n          *(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }\n          piVar41 = *ppiVar20;\n          iVar38 = *(int *)((int)puVar21 + iVar12);\n          iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar41 + iVar13 + iVar38;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          *(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          iVar22 = iVar22 + 1;\n          piVar33 = piVar33 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        }" { (expression_statement "(*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B);" (call_expression "(*local_90)(fft_l,ppmVar16[2],iVar37 * *piVar33,B)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(fft_l,ppmVar16[2],iVar37 * *piVar33,B)" ( identifier , (subscript_expression "ppmVar16[2]" identifier [ number_literal ]) , (binary_expression "iVar37 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[2];" (assignment_expression "puVar21 = ppmVar16[2]" identifier = (subscript_expression "ppmVar16[2]" identifier [ number_literal ])) ;) (expression_statement "piVar41 = *ppiVar20;" (assignment_expression "piVar41 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar43 = *(int *)((int)*ppmVar16 + iVar12);" (assignment_expression "iVar43 = *(int *)((int)*ppmVar16 + iVar12)" identifier = (pointer_expression "*(int *)((int)*ppmVar16 + iVar12)" * (cast_expression "(int *)((int)*ppmVar16 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppmVar16 + iVar12)" ( (binary_expression "(int)*ppmVar16 + iVar12" (cast_expression "(int)*ppmVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppmVar16" * identifier)) + identifier) ))))) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar13 = iVar43 - ((int)piVar41 + iVar38);" (assignment_expression "iVar13 = iVar43 - ((int)piVar41 + iVar38)" identifier = (binary_expression "iVar43 - ((int)piVar41 + iVar38)" identifier - (parenthesized_expression "((int)piVar41 + iVar38)" ( (binary_expression "(int)piVar41 + iVar38" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43;" (assignment_expression "uVar26 = iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43" identifier = (binary_expression "iVar13 >> 0x1f & ((int)piVar41 + iVar38) - iVar43" (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar41 + iVar38) - iVar43" (parenthesized_expression "((int)piVar41 + iVar38)" ( (binary_expression "(int)piVar41 + iVar38" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar12) = iVar13 + uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar12)" * (cast_expression "(uint *)((int)puVar21 + iVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar13 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }" { (do_statement "do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_0004534c;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_0004534c;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004534c;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }" else (compound_statement "{\nLAB_0004534c:\n            puVar21 = *ppmVar16;\n          }" { (labeled_statement "LAB_0004534c:\n            puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar41 = *ppiVar20;" (assignment_expression "piVar41 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar38 = *(int *)((int)puVar21 + iVar12);" (assignment_expression "iVar38 = *(int *)((int)puVar21 + iVar12)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar38 = (int)piVar41 + iVar13 + iVar38;" (assignment_expression "iVar38 = (int)piVar41 + iVar13 + iVar38" identifier = (binary_expression "(int)piVar41 + iVar13 + iVar38" (binary_expression "(int)piVar41 + iVar13" (cast_expression "(int)piVar41" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar38 - 1;" (assignment_expression "uVar26 = iVar38 - 1" identifier = (binary_expression "iVar38 - 1" identifier - number_literal)) ;) (if_statement "if (iVar38 == 0) {\n            uVar26 = 0;\n          }" if (parenthesized_expression "(iVar38 == 0)" ( (binary_expression "iVar38 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar26 = 0;\n          }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar21 + iVar12) = iVar38 - uVar26;" (assignment_expression "*(int *)((int)puVar21 + iVar12) = iVar38 - uVar26" (pointer_expression "*(int *)((int)puVar21 + iVar12)" * (cast_expression "(int *)((int)puVar21 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar12)" ( (binary_expression "(int)puVar21 + iVar12" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar38 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" { (do_statement "do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 4;" (assignment_expression "ppmVar16 = ppmVar16 + 4" identifier = (binary_expression "ppmVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 < iVar7)" ( (binary_expression "iVar22 < iVar7" identifier < identifier) )) ;) }) (else_clause "else {\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }" else (compound_statement "{\n        ppiVar20 = (int **)(puVar25 + -3);\n        piVar41 = (int *)puVar25[-2];\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        iVar12 = l << 4;\n        mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);\n        ppmVar16 = Ap + 2;\n        (*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }\n        iVar12 = (int)B * 4;\n        if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }\n        piVar33 = (int *)puVar25[-1];\nLAB_00044f40:\n        local_5c = puVar25 + -3;\n        ppmVar17 = Ap + 1;\n        iVar12 = l << 4;\n        piVar41 = (int *)puVar25[-2];\n        (*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);\n        (*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);\n        ppmVar16 = Ap + 3;\n        if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }\n        if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }\n      }" { (expression_statement "ppiVar20 = (int **)(puVar25 + -3);" (assignment_expression "ppiVar20 = (int **)(puVar25 + -3)" identifier = (cast_expression "(int **)(puVar25 + -3)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -3)" ( (binary_expression "puVar25 + -3" identifier + number_literal) )))) ;) (expression_statement "piVar41 = (int *)puVar25[-2];" (assignment_expression "piVar41 = (int *)puVar25[-2]" identifier = (cast_expression "(int *)puVar25[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-2]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "iVar12 = l << 4;" (assignment_expression "iVar12 = l << 4" identifier = (binary_expression "l << 4" identifier << number_literal)) ;) (expression_statement "mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l);" (call_expression "mpn_fft_fft(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l)" identifier (argument_list "(Ap,iVar22,ppiVar20,iVar12,(mp_size_t)B,8,(mp_ptr)fft_l)" ( identifier , identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , number_literal , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (expression_statement "ppmVar16 = Ap + 2;" (assignment_expression "ppmVar16 = Ap + 2" identifier = (binary_expression "Ap + 2" identifier + number_literal)) ;) (expression_statement "(*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 4,iVar22,ppiVar20,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 4" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n        }" { (expression_statement "(*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }" else (compound_statement "{\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar39 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          ppmVar17 = Ap;\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);\n        }" { (expression_statement "piVar27 = piVar41 + iVar22 * 2;" (assignment_expression "piVar27 = piVar41 + iVar22 * 2" identifier = (binary_expression "piVar41 + iVar22 * 2" identifier + (binary_expression "iVar22 * 2" identifier * number_literal))) ;) (expression_statement "ppiVar39 = fft_l + (int)B;" (assignment_expression "ppiVar39 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "ppmVar17 = Ap;" (assignment_expression "ppmVar17 = Ap" identifier = identifier) ;) (do_statement "do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar41 != piVar27);" do (compound_statement "{\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          }" { (expression_statement "(*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);" (call_expression "(*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(fft_l,ppmVar17[4],iVar38 * *piVar41,B)" ( identifier , (subscript_expression "ppmVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar38 * *piVar41" identifier * (pointer_expression "*piVar41" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar17[4];" (assignment_expression "puVar21 = ppmVar17[4]" identifier = (subscript_expression "ppmVar17[4]" identifier [ number_literal ])) ;) (expression_statement "piVar45 = *ppiVar39;" (assignment_expression "piVar45 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar17)[(int)B];" (assignment_expression "mVar23 = (*ppmVar17)[(int)B]" identifier = (subscript_expression "(*ppmVar17)[(int)B]" (parenthesized_expression "(*ppmVar17)" ( (pointer_expression "*ppmVar17" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" (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 "(puVar21,*ppmVar17,fft_l,B)" ( identifier , (pointer_expression "*ppmVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar43 = mVar23 - ((int)piVar45 + iVar13);" (assignment_expression "iVar43 = mVar23 - ((int)piVar45 + iVar13)" identifier = (binary_expression "mVar23 - ((int)piVar45 + iVar13)" identifier - (parenthesized_expression "((int)piVar45 + iVar13)" ( (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;" (assignment_expression "uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23" identifier = (binary_expression "iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23" (binary_expression "iVar43 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar45 + iVar13) - mVar23" (parenthesized_expression "((int)piVar45 + iVar13)" ( (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar43 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar43 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar43 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }" { (do_statement "do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004333c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_0004333c;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004333c;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;) }) (else_clause "else {\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }" else (compound_statement "{\nLAB_0004333c:\n              puVar21 = *ppmVar17;\n            }" { (labeled_statement "LAB_0004333c:\n              puVar21 = *ppmVar17;" statement_identifier : (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;)) }))) (expression_statement "piVar45 = *ppiVar39;" (assignment_expression "piVar45 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar13 = (int)piVar45 + iVar13 + uVar26;" (assignment_expression "iVar13 = (int)piVar45 + iVar13 + uVar26" identifier = (binary_expression "(int)piVar45 + iVar13 + uVar26" (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar13 - 1;" (assignment_expression "uVar26 = iVar13 - 1" identifier = (binary_expression "iVar13 - 1" identifier - number_literal)) ;) (if_statement "if (iVar13 == 0) {\n              uVar26 = 0;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar26 = 0;\n            }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar13 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar13 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" { (do_statement "do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar41 = piVar41 + 2;" (assignment_expression "piVar41 = piVar41 + 2" identifier = (binary_expression "piVar41 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar17 = ppmVar17 + 8;" (assignment_expression "ppmVar17 = ppmVar17 + 8" identifier = (binary_expression "ppmVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar41 != piVar27)" ( (binary_expression "piVar41 != piVar27" identifier != identifier) )) ;) (expression_statement "piVar27 = (int *)puVar25[-2];" (assignment_expression "piVar27 = (int *)puVar25[-2]" identifier = (cast_expression "(int *)puVar25[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(ppmVar16,iVar22,ppiVar20,iVar12,B,8,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 6,iVar22,ppiVar20,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar41 = piVar27 + iVar22 * 2;" (assignment_expression "piVar41 = piVar27 + iVar22 * 2" identifier = (binary_expression "piVar27 + iVar22 * 2" identifier + (binary_expression "iVar22 * 2" identifier * number_literal))) ;) (do_statement "do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar27 != piVar41);" do (compound_statement "{\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar39;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar13 = mVar23 - ((int)piVar45 + iVar12);\n            uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;\n            puVar21[(int)B] = iVar13 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar39;\n            uVar26 = puVar21[(int)B];\n            iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar12 = (int)piVar45 + iVar12 + uVar26;\n            uVar26 = iVar12 - 1;\n            if (iVar12 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar12 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          }" { (expression_statement "(*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);" (call_expression "(*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(fft_l,ppmVar16[4],iVar38 * *piVar27,B)" ( identifier , (subscript_expression "ppmVar16[4]" identifier [ number_literal ]) , (binary_expression "iVar38 * *piVar27" identifier * (pointer_expression "*piVar27" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[4];" (assignment_expression "puVar21 = ppmVar16[4]" identifier = (subscript_expression "ppmVar16[4]" identifier [ number_literal ])) ;) (expression_statement "piVar45 = *ppiVar39;" (assignment_expression "piVar45 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar16)[(int)B];" (assignment_expression "mVar23 = (*ppmVar16)[(int)B]" identifier = (subscript_expression "(*ppmVar16)[(int)B]" (parenthesized_expression "(*ppmVar16)" ( (pointer_expression "*ppmVar16" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar12 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar13 = mVar23 - ((int)piVar45 + iVar12);" (assignment_expression "iVar13 = mVar23 - ((int)piVar45 + iVar12)" identifier = (binary_expression "mVar23 - ((int)piVar45 + iVar12)" identifier - (parenthesized_expression "((int)piVar45 + iVar12)" ( (binary_expression "(int)piVar45 + iVar12" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23;" (assignment_expression "uVar26 = iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23" identifier = (binary_expression "iVar13 >> 0x1f & ((int)piVar45 + iVar12) - mVar23" (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar45 + iVar12) - mVar23" (parenthesized_expression "((int)piVar45 + iVar12)" ( (binary_expression "(int)piVar45 + iVar12" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar13 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar13 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }" { (do_statement "do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_0004478c;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_0004478c;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004478c;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }" else (compound_statement "{\nLAB_0004478c:\n              puVar21 = *ppmVar16;\n            }" { (labeled_statement "LAB_0004478c:\n              puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar45 = *ppiVar39;" (assignment_expression "piVar45 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar12 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar12 = (int)piVar45 + iVar12 + uVar26;" (assignment_expression "iVar12 = (int)piVar45 + iVar12 + uVar26" identifier = (binary_expression "(int)piVar45 + iVar12 + uVar26" (binary_expression "(int)piVar45 + iVar12" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar12 - 1;" (assignment_expression "uVar26 = iVar12 - 1" identifier = (binary_expression "iVar12 - 1" identifier - number_literal)) ;) (if_statement "if (iVar12 == 0) {\n              uVar26 = 0;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar26 = 0;\n            }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar12 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar12 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar12 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" { (do_statement "do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar27 = piVar27 + 2;" (assignment_expression "piVar27 = piVar27 + 2" identifier = (binary_expression "piVar27 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 8;" (assignment_expression "ppmVar16 = ppmVar16 + 8" identifier = (binary_expression "ppmVar16 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar27 != piVar41)" ( (binary_expression "piVar27 != piVar41" identifier != identifier) )) ;) }))) (expression_statement "iVar12 = (int)B * 4;" (assignment_expression "iVar12 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar7) {\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          ppiVar20 = fft_l + (int)B;\n          goto LAB_000448f4;\n        }" { (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "piVar33 = (int *)puVar25[-1];" (assignment_expression "piVar33 = (int *)puVar25[-1]" identifier = (cast_expression "(int *)puVar25[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_00044f40:\n        local_5c = puVar25 + -3;" statement_identifier : (expression_statement "local_5c = puVar25 + -3;" (assignment_expression "local_5c = puVar25 + -3" identifier = (binary_expression "puVar25 + -3" identifier + number_literal)) ;)) (expression_statement "ppmVar17 = Ap + 1;" (assignment_expression "ppmVar17 = Ap + 1" identifier = (binary_expression "Ap + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = l << 4;" (assignment_expression "iVar12 = l << 4" identifier = (binary_expression "l << 4" identifier << number_literal)) ;) (expression_statement "piVar41 = (int *)puVar25[-2];" (assignment_expression "piVar41 = (int *)puVar25[-2]" identifier = (cast_expression "(int *)puVar25[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(ppmVar17,iVar22,local_5c,iVar12,B,8,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 5,iVar22,local_5c,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 5" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "ppmVar16 = Ap + 3;" (assignment_expression "ppmVar16 = Ap + 3" identifier = (binary_expression "Ap + 3" identifier + number_literal)) ;) (if_statement "if (iVar22 < 1) {\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }\n        else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n        }" { (expression_statement "(*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }" else (compound_statement "{\n          piVar27 = piVar41 + iVar22 * 2;\n          ppiVar20 = fft_l + (int)B;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n          do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);\n          piVar27 = (int *)puVar25[-2];\n          (*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);\n          (*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);\n          piVar41 = piVar27 + iVar22 * 2;\n          do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);\n        }" { (expression_statement "piVar27 = piVar41 + iVar22 * 2;" (assignment_expression "piVar27 = piVar41 + iVar22 * 2" identifier = (binary_expression "piVar41 + iVar22 * 2" identifier + (binary_expression "iVar22 * 2" identifier * number_literal))) ;) (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (do_statement "do {\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          } while (piVar27 != piVar41);" do (compound_statement "{\n            (*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);\n            puVar21 = ppmVar17[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar17)[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n            iVar43 = mVar23 - ((int)piVar45 + iVar13);\n            uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;\n            puVar21[(int)B] = iVar43 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar13 = (int)piVar45 + iVar13 + uVar26;\n            uVar26 = iVar13 - 1;\n            if (iVar13 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar13 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar41 = piVar41 + 2;\n            ppmVar17 = ppmVar17 + 8;\n          }" { (expression_statement "(*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B);" (call_expression "(*pcVar14)(fft_l,ppmVar17[4],iVar38 * *piVar41,B)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(fft_l,ppmVar17[4],iVar38 * *piVar41,B)" ( identifier , (subscript_expression "ppmVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar38 * *piVar41" identifier * (pointer_expression "*piVar41" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar17[4];" (assignment_expression "puVar21 = ppmVar17[4]" identifier = (subscript_expression "ppmVar17[4]" identifier [ number_literal ])) ;) (expression_statement "piVar45 = *ppiVar20;" (assignment_expression "piVar45 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar17)[(int)B];" (assignment_expression "mVar23 = (*ppmVar17)[(int)B]" identifier = (subscript_expression "(*ppmVar17)[(int)B]" (parenthesized_expression "(*ppmVar17)" ( (pointer_expression "*ppmVar17" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" (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 "(puVar21,*ppmVar17,fft_l,B)" ( identifier , (pointer_expression "*ppmVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar43 = mVar23 - ((int)piVar45 + iVar13);" (assignment_expression "iVar43 = mVar23 - ((int)piVar45 + iVar13)" identifier = (binary_expression "mVar23 - ((int)piVar45 + iVar13)" identifier - (parenthesized_expression "((int)piVar45 + iVar13)" ( (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23;" (assignment_expression "uVar26 = iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23" identifier = (binary_expression "iVar43 >> 0x1f & ((int)piVar45 + iVar13) - mVar23" (binary_expression "iVar43 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar45 + iVar13) - mVar23" (parenthesized_expression "((int)piVar45 + iVar13)" ( (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar43 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar43 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar43 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }\n            else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar17;\n            }" { (do_statement "do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_00044fe8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_00044fe8;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044fe8;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;) }) (else_clause "else {\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }" else (compound_statement "{\nLAB_00044fe8:\n              puVar21 = *ppmVar17;\n            }" { (labeled_statement "LAB_00044fe8:\n              puVar21 = *ppmVar17;" statement_identifier : (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;)) }))) (expression_statement "piVar45 = *ppiVar20;" (assignment_expression "piVar45 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar13 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar13 = (int)piVar45 + iVar13 + uVar26;" (assignment_expression "iVar13 = (int)piVar45 + iVar13 + uVar26" identifier = (binary_expression "(int)piVar45 + iVar13 + uVar26" (binary_expression "(int)piVar45 + iVar13" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar13 - 1;" (assignment_expression "uVar26 = iVar13 - 1" identifier = (binary_expression "iVar13 - 1" identifier - number_literal)) ;) (if_statement "if (iVar13 == 0) {\n              uVar26 = 0;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar26 = 0;\n            }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar13 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar13 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar13 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" { (do_statement "do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar41 = piVar41 + 2;" (assignment_expression "piVar41 = piVar41 + 2" identifier = (binary_expression "piVar41 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar17 = ppmVar17 + 8;" (assignment_expression "ppmVar17 = ppmVar17 + 8" identifier = (binary_expression "ppmVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar27 != piVar41)" ( (binary_expression "piVar27 != piVar41" identifier != identifier) )) ;) (expression_statement "piVar27 = (int *)puVar25[-2];" (assignment_expression "piVar27 = (int *)puVar25[-2]" identifier = (cast_expression "(int *)puVar25[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(ppmVar16,iVar22,local_5c,iVar12,B,8,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l);" (call_expression "(*local_6c)(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(Ap + 7,iVar22,local_5c,iVar12,B,8,fft_l)" ( (binary_expression "Ap + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar41 = piVar27 + iVar22 * 2;" (assignment_expression "piVar41 = piVar27 + iVar22 * 2" identifier = (binary_expression "piVar27 + iVar22 * 2" identifier + (binary_expression "iVar22 * 2" identifier * number_literal))) ;) (do_statement "do {\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          } while (piVar41 != piVar27);" do (compound_statement "{\n            (*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);\n            puVar21 = ppmVar16[4];\n            piVar45 = *ppiVar20;\n            mVar23 = (*ppmVar16)[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n            iVar12 = mVar23 - ((int)piVar45 + iVar22);\n            uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;\n            puVar21[(int)B] = iVar12 + uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar26 + uVar30;\n            if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }\n            piVar45 = *ppiVar20;\n            uVar26 = puVar21[(int)B];\n            iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n            iVar22 = (int)piVar45 + iVar22 + uVar26;\n            uVar26 = iVar22 - 1;\n            if (iVar22 == 0) {\n              uVar26 = 0;\n            }\n            puVar21[(int)B] = iVar22 - uVar26;\n            uVar30 = *puVar21;\n            *puVar21 = uVar30 - uVar26;\n            if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }\n            piVar27 = piVar27 + 2;\n            ppmVar16 = ppmVar16 + 8;\n          }" { (expression_statement "(*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B);" (call_expression "(*pcVar14)(fft_l,ppmVar16[4],iVar38 * *piVar27,B)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(fft_l,ppmVar16[4],iVar38 * *piVar27,B)" ( identifier , (subscript_expression "ppmVar16[4]" identifier [ number_literal ]) , (binary_expression "iVar38 * *piVar27" identifier * (pointer_expression "*piVar27" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[4];" (assignment_expression "puVar21 = ppmVar16[4]" identifier = (subscript_expression "ppmVar16[4]" identifier [ number_literal ])) ;) (expression_statement "piVar45 = *ppiVar20;" (assignment_expression "piVar45 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar16)[(int)B];" (assignment_expression "mVar23 = (*ppmVar16)[(int)B]" identifier = (subscript_expression "(*ppmVar16)[(int)B]" (parenthesized_expression "(*ppmVar16)" ( (pointer_expression "*ppmVar16" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar12 = mVar23 - ((int)piVar45 + iVar22);" (assignment_expression "iVar12 = mVar23 - ((int)piVar45 + iVar22)" identifier = (binary_expression "mVar23 - ((int)piVar45 + iVar22)" identifier - (parenthesized_expression "((int)piVar45 + iVar22)" ( (binary_expression "(int)piVar45 + iVar22" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23;" (assignment_expression "uVar26 = iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23" identifier = (binary_expression "iVar12 >> 0x1f & ((int)piVar45 + iVar22) - mVar23" (binary_expression "iVar12 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar45 + iVar22) - mVar23" (parenthesized_expression "((int)piVar45 + iVar22)" ( (binary_expression "(int)piVar45 + iVar22" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar12 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar12 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar12 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }\n            else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);\n              puVar21 = *ppmVar16;\n            }" { (do_statement "do {\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1] + 1;\n                puVar21[1] = uVar26;\n                if (uVar26 != 0) goto LAB_000451c8;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 + 1;\n              }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_000451c8;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000451c8;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }" else (compound_statement "{\nLAB_000451c8:\n              puVar21 = *ppmVar16;\n            }" { (labeled_statement "LAB_000451c8:\n              puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar45 = *ppiVar20;" (assignment_expression "piVar45 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar22 = (int)piVar45 + iVar22 + uVar26;" (assignment_expression "iVar22 = (int)piVar45 + iVar22 + uVar26" identifier = (binary_expression "(int)piVar45 + iVar22 + uVar26" (binary_expression "(int)piVar45 + iVar22" (cast_expression "(int)piVar45" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar22 - 1;" (assignment_expression "uVar26 = iVar22 - 1" identifier = (binary_expression "iVar22 - 1" identifier - number_literal)) ;) (if_statement "if (iVar22 == 0) {\n              uVar26 = 0;\n            }" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar26 = 0;\n            }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar22 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar22 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar22 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n              do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);\n            }" { (do_statement "do {\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              } while (uVar26 == 0);" do (compound_statement "{\n                uVar26 = puVar21[1];\n                puVar21[1] = uVar26 - 1;\n                if (uVar26 != 0) break;\n                puVar21 = puVar21 + 2;\n                uVar26 = *puVar21;\n                *puVar21 = uVar26 - 1;\n              }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar27 = piVar27 + 2;" (assignment_expression "piVar27 = piVar27 + 2" identifier = (binary_expression "piVar27 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 8;" (assignment_expression "ppmVar16 = ppmVar16 + 8" identifier = (binary_expression "ppmVar16 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar41 != piVar27)" ( (binary_expression "piVar41 != piVar27" identifier != identifier) )) ;) }))) (if_statement "if (0 < iVar7) {\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          iVar12 = (int)B * 4;\n          ppiVar20 = fft_l + (int)B;\n          local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n          goto LAB_0004533c;\n        }" { (expression_statement "iVar12 = (int)B * 4;" (assignment_expression "iVar12 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) }))) (expression_statement "iVar22 = (int)B * 4;" (assignment_expression "iVar22 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar36) {\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }" if (parenthesized_expression "(0 < iVar36)" ( (binary_expression "0 < iVar36" number_literal < identifier) )) (compound_statement "{\n        ppiVar20 = fft_l + (int)B;\n        goto LAB_000437b8;\n      }" { (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000437b8;" goto statement_identifier ;) })) (if_statement "if (T != (mp_ptr)0x0) goto LAB_000427e4;" if (parenthesized_expression "(T != (mp_ptr)0x0)" ( (binary_expression "T != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;)) (expression_statement "piVar32 = (int *)*puVar25;" (assignment_expression "piVar32 = (int *)*puVar25" identifier = (cast_expression "(int *)*puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (labeled_statement "LAB_0004555c:\n      iVar22 = l << 3;" statement_identifier : (expression_statement "iVar22 = l << 3;" (assignment_expression "iVar22 = l << 3" identifier = (binary_expression "l << 3" identifier << number_literal)) ;)) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "ppiVar20 = (int **)(puVar25 + -2);" (assignment_expression "ppiVar20 = (int **)(puVar25 + -2)" identifier = (cast_expression "(int **)(puVar25 + -2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + -2)" ( (binary_expression "puVar25 + -2" identifier + number_literal) )))) ;) (expression_statement "piVar33 = (int *)puVar25[-1];" (assignment_expression "piVar33 = (int *)puVar25[-1]" identifier = (cast_expression "(int *)puVar25[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-1]" identifier [ number_literal ]))) ;) (expression_statement "mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l);" (call_expression "mpn_fft_fft(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l)" identifier (argument_list "(Bp,iVar7,ppiVar20,iVar22,(mp_size_t)B,4,(mp_ptr)fft_l)" ( identifier , identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , number_literal , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (expression_statement "ppmVar16 = Bp + 1;" (assignment_expression "ppmVar16 = Bp + 1" identifier = (binary_expression "Bp + 1" identifier + number_literal)) ;) (expression_statement "(*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l);" (call_expression "(*pcVar14)(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(Bp + 2,iVar7,ppiVar20,iVar22,B,4,fft_l)" ( (binary_expression "Bp + 2" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar7 < 1) {\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }\n      else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n      }" { (expression_statement "(*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);" (call_expression "(*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);" (call_expression "(*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l)" ( (binary_expression "Bp + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }" else (compound_statement "{\n        piVar41 = piVar33 + iVar7 * 2;\n        ppiVar39 = fft_l + (int)B;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        ppmVar17 = Bp;\n        do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);\n        piVar41 = (int *)puVar25[-1];\n        (*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        (*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);\n        piVar33 = piVar41 + iVar7 * 2;\n        do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);\n      }" { (expression_statement "piVar41 = piVar33 + iVar7 * 2;" (assignment_expression "piVar41 = piVar33 + iVar7 * 2" identifier = (binary_expression "piVar33 + iVar7 * 2" identifier + (binary_expression "iVar7 * 2" identifier * number_literal))) ;) (expression_statement "ppiVar39 = fft_l + (int)B;" (assignment_expression "ppiVar39 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "ppmVar17 = Bp;" (assignment_expression "ppmVar17 = Bp" identifier = identifier) ;) (do_statement "do {\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        } while (piVar33 != piVar41);" do (compound_statement "{\n          (*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);\n          puVar21 = ppmVar17[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar17)[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);\n          iVar12 = mVar23 - ((int)piVar27 + iVar38);\n          uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;\n          puVar21[(int)B] = iVar12 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar38 = (int)piVar27 + iVar38 + uVar26;\n          uVar26 = iVar38 - 1;\n          if (iVar38 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar38 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar33 = piVar33 + 2;\n          ppmVar17 = ppmVar17 + 4;\n        }" { (expression_statement "(*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B);" (call_expression "(*pcVar15)(fft_l,ppmVar17[2],iVar37 * *piVar33,B)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(fft_l,ppmVar17[2],iVar37 * *piVar33,B)" ( identifier , (subscript_expression "ppmVar17[2]" identifier [ number_literal ]) , (binary_expression "iVar37 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar17[2];" (assignment_expression "puVar21 = ppmVar17[2]" identifier = (subscript_expression "ppmVar17[2]" identifier [ number_literal ])) ;) (expression_statement "piVar27 = *ppiVar39;" (assignment_expression "piVar27 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar17)[(int)B];" (assignment_expression "mVar23 = (*ppmVar17)[(int)B]" identifier = (subscript_expression "(*ppmVar17)[(int)B]" (parenthesized_expression "(*ppmVar17)" ( (pointer_expression "*ppmVar17" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar17,fft_l,B)" (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 "(puVar21,*ppmVar17,fft_l,B)" ( identifier , (pointer_expression "*ppmVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar12 = mVar23 - ((int)piVar27 + iVar38);" (assignment_expression "iVar12 = mVar23 - ((int)piVar27 + iVar38)" identifier = (binary_expression "mVar23 - ((int)piVar27 + iVar38)" identifier - (parenthesized_expression "((int)piVar27 + iVar38)" ( (binary_expression "(int)piVar27 + iVar38" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23;" (assignment_expression "uVar26 = iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23" identifier = (binary_expression "iVar12 >> 0x1f & ((int)piVar27 + iVar38) - mVar23" (binary_expression "iVar12 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar27 + iVar38) - mVar23" (parenthesized_expression "((int)piVar27 + iVar38)" ( (binary_expression "(int)piVar27 + iVar38" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar12 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar12 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar12 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }\n          else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar17;\n          }" { (do_statement "do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_00045614;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_00045614;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045614;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;) }) (else_clause "else {\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }" else (compound_statement "{\nLAB_00045614:\n            puVar21 = *ppmVar17;\n          }" { (labeled_statement "LAB_00045614:\n            puVar21 = *ppmVar17;" statement_identifier : (expression_statement "puVar21 = *ppmVar17;" (assignment_expression "puVar21 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;)) }))) (expression_statement "piVar27 = *ppiVar39;" (assignment_expression "piVar27 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar38 = (int)piVar27 + iVar38 + uVar26;" (assignment_expression "iVar38 = (int)piVar27 + iVar38 + uVar26" identifier = (binary_expression "(int)piVar27 + iVar38 + uVar26" (binary_expression "(int)piVar27 + iVar38" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar38 - 1;" (assignment_expression "uVar26 = iVar38 - 1" identifier = (binary_expression "iVar38 - 1" identifier - number_literal)) ;) (if_statement "if (iVar38 == 0) {\n            uVar26 = 0;\n          }" if (parenthesized_expression "(iVar38 == 0)" ( (binary_expression "iVar38 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar26 = 0;\n          }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar38 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar38 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar38 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" { (do_statement "do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar17 = ppmVar17 + 4;" (assignment_expression "ppmVar17 = ppmVar17 + 4" identifier = (binary_expression "ppmVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar33 != piVar41)" ( (binary_expression "piVar33 != piVar41" identifier != identifier) )) ;) (expression_statement "piVar41 = (int *)puVar25[-1];" (assignment_expression "piVar41 = (int *)puVar25[-1]" identifier = (cast_expression "(int *)puVar25[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[-1]" identifier [ number_literal ]))) ;) (expression_statement "(*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l);" (call_expression "(*pcVar14)(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(ppmVar16,iVar7,ppiVar20,iVar22,B,4,fft_l)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l);" (call_expression "(*pcVar14)(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(Bp + 3,iVar7,ppiVar20,iVar22,B,4,fft_l)" ( (binary_expression "Bp + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar33 = piVar41 + iVar7 * 2;" (assignment_expression "piVar33 = piVar41 + iVar7 * 2" identifier = (binary_expression "piVar41 + iVar7 * 2" identifier + (binary_expression "iVar7 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        } while (piVar41 != piVar33);" do (compound_statement "{\n          (*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);\n          puVar21 = ppmVar16[2];\n          piVar27 = *ppiVar39;\n          mVar23 = (*ppmVar16)[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n          iVar22 = mVar23 - ((int)piVar27 + iVar7);\n          uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;\n          puVar21[(int)B] = iVar22 + uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar26 + uVar30;\n          if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }\n          piVar27 = *ppiVar39;\n          uVar26 = puVar21[(int)B];\n          iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n          iVar7 = (int)piVar27 + iVar7 + uVar26;\n          uVar26 = iVar7 - 1;\n          if (iVar7 == 0) {\n            uVar26 = 0;\n          }\n          puVar21[(int)B] = iVar7 - uVar26;\n          uVar30 = *puVar21;\n          *puVar21 = uVar30 - uVar26;\n          if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }\n          piVar41 = piVar41 + 2;\n          ppmVar16 = ppmVar16 + 4;\n        }" { (expression_statement "(*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B);" (call_expression "(*pcVar15)(fft_l,ppmVar16[2],iVar37 * *piVar41,B)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(fft_l,ppmVar16[2],iVar37 * *piVar41,B)" ( identifier , (subscript_expression "ppmVar16[2]" identifier [ number_literal ]) , (binary_expression "iVar37 * *piVar41" identifier * (pointer_expression "*piVar41" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[2];" (assignment_expression "puVar21 = ppmVar16[2]" identifier = (subscript_expression "ppmVar16[2]" identifier [ number_literal ])) ;) (expression_statement "piVar27 = *ppiVar39;" (assignment_expression "piVar27 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "mVar23 = (*ppmVar16)[(int)B];" (assignment_expression "mVar23 = (*ppmVar16)[(int)B]" identifier = (subscript_expression "(*ppmVar16)[(int)B]" (parenthesized_expression "(*ppmVar16)" ( (pointer_expression "*ppmVar16" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar22 = mVar23 - ((int)piVar27 + iVar7);" (assignment_expression "iVar22 = mVar23 - ((int)piVar27 + iVar7)" identifier = (binary_expression "mVar23 - ((int)piVar27 + iVar7)" identifier - (parenthesized_expression "((int)piVar27 + iVar7)" ( (binary_expression "(int)piVar27 + iVar7" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23;" (assignment_expression "uVar26 = iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23" identifier = (binary_expression "iVar22 >> 0x1f & ((int)piVar27 + iVar7) - mVar23" (binary_expression "iVar22 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar27 + iVar7) - mVar23" (parenthesized_expression "((int)piVar27 + iVar7)" ( (binary_expression "(int)piVar27 + iVar7" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "puVar21[(int)B] = iVar22 + uVar26;" (assignment_expression "puVar21[(int)B] = iVar22 + uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar22 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }\n          else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);\n            puVar21 = *ppmVar16;\n          }" { (do_statement "do {\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            } while (uVar26 + 1 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1] + 1;\n              puVar21[1] = uVar26;\n              if (uVar26 != 0) goto LAB_000457d8;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 + 1;\n            }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_000457d8;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000457d8;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }" else (compound_statement "{\nLAB_000457d8:\n            puVar21 = *ppmVar16;\n          }" { (labeled_statement "LAB_000457d8:\n            puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar27 = *ppiVar39;" (assignment_expression "piVar27 = *ppiVar39" identifier = (pointer_expression "*ppiVar39" * identifier)) ;) (expression_statement "uVar26 = puVar21[(int)B];" (assignment_expression "uVar26 = puVar21[(int)B]" identifier = (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar7 = (int)piVar27 + iVar7 + uVar26;" (assignment_expression "iVar7 = (int)piVar27 + iVar7 + uVar26" identifier = (binary_expression "(int)piVar27 + iVar7 + uVar26" (binary_expression "(int)piVar27 + iVar7" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar7 - 1;" (assignment_expression "uVar26 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (if_statement "if (iVar7 == 0) {\n            uVar26 = 0;\n          }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar26 = 0;\n          }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "puVar21[(int)B] = iVar7 - uVar26;" (assignment_expression "puVar21[(int)B] = iVar7 - uVar26" (subscript_expression "puVar21[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar7 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);\n          }" { (do_statement "do {\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            } while (uVar26 == 0);" do (compound_statement "{\n              uVar26 = puVar21[1];\n              puVar21[1] = uVar26 - 1;\n              if (uVar26 != 0) break;\n              puVar21 = puVar21 + 2;\n              uVar26 = *puVar21;\n              *puVar21 = uVar26 - 1;\n            }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar41 = piVar41 + 2;" (assignment_expression "piVar41 = piVar41 + 2" identifier = (binary_expression "piVar41 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 4;" (assignment_expression "ppmVar16 = ppmVar16 + 4" identifier = (binary_expression "ppmVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar41 != piVar33)" ( (binary_expression "piVar41 != piVar33" identifier != identifier) )) ;) }))) (if_statement "if (iVar36 < 1) goto LAB_000446c4;" if (parenthesized_expression "(iVar36 < 1)" ( (binary_expression "iVar36 < 1" identifier < number_literal) )) (goto_statement "goto LAB_000446c4;" goto statement_identifier ;)) (expression_statement "iVar22 = (int)B * 4;" (assignment_expression "iVar22 = (int)B * 4" identifier = (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "ppiVar20 = fft_l + (int)B;" (assignment_expression "ppiVar20 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) }))) (labeled_statement "LAB_000442ec:\n    iVar7 = 0;" statement_identifier : (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;)) (expression_statement "ppmVar16 = Bp;" (assignment_expression "ppmVar16 = Bp" identifier = identifier) ;) (do_statement "do {\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    } while (iVar7 < iVar36);" do (compound_statement "{\n      (*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);\n      puVar21 = ppmVar16[1];\n      piVar33 = *ppiVar20;\n      iVar12 = *(int *)((int)*ppmVar16 + iVar22);\n      iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);\n      iVar38 = iVar12 - ((int)piVar33 + iVar37);\n      uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;\n      *(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }\n      piVar33 = *ppiVar20;\n      iVar37 = *(int *)((int)puVar21 + iVar22);\n      iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);\n      iVar37 = (int)piVar33 + iVar38 + iVar37;\n      uVar26 = iVar37 - 1;\n      if (iVar37 == 0) {\n        uVar26 = 0;\n      }\n      *(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;\n      uVar30 = *puVar21;\n      *puVar21 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }\n      iVar7 = iVar7 + 1;\n      piVar32 = piVar32 + 2;\n      ppmVar16 = ppmVar16 + 2;\n    }" { (expression_statement "(*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B);" (call_expression "(*local_90)(fft_l,ppmVar16[1],local_70 * *piVar32,B)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(fft_l,ppmVar16[1],local_70 * *piVar32,B)" ( identifier , (subscript_expression "ppmVar16[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar32" identifier * (pointer_expression "*piVar32" * identifier)) , identifier ))) ;) (expression_statement "puVar21 = ppmVar16[1];" (assignment_expression "puVar21 = ppmVar16[1]" identifier = (subscript_expression "ppmVar16[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33 = *ppiVar20;" (assignment_expression "piVar33 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar12 = *(int *)((int)*ppmVar16 + iVar22);" (assignment_expression "iVar12 = *(int *)((int)*ppmVar16 + iVar22)" identifier = (pointer_expression "*(int *)((int)*ppmVar16 + iVar22)" * (cast_expression "(int *)((int)*ppmVar16 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppmVar16 + iVar22)" ( (binary_expression "(int)*ppmVar16 + iVar22" (cast_expression "(int)*ppmVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppmVar16" * identifier)) + identifier) ))))) ;) (expression_statement "iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B);" (assignment_expression "iVar37 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar21,*ppmVar16,fft_l,B)" (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 "(puVar21,*ppmVar16,fft_l,B)" ( identifier , (pointer_expression "*ppmVar16" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar38 = iVar12 - ((int)piVar33 + iVar37);" (assignment_expression "iVar38 = iVar12 - ((int)piVar33 + iVar37)" identifier = (binary_expression "iVar12 - ((int)piVar33 + iVar37)" identifier - (parenthesized_expression "((int)piVar33 + iVar37)" ( (binary_expression "(int)piVar33 + iVar37" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12;" (assignment_expression "uVar26 = iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12" identifier = (binary_expression "iVar38 >> 0x1f & ((int)piVar33 + iVar37) - iVar12" (binary_expression "iVar38 >> 0x1f" identifier >> number_literal) & (binary_expression "((int)piVar33 + iVar37) - iVar12" (parenthesized_expression "((int)piVar33 + iVar37)" ( (binary_expression "(int)piVar33 + iVar37" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26;" (assignment_expression "*(uint *)((int)puVar21 + iVar22) = iVar38 + uVar26" (pointer_expression "*(uint *)((int)puVar21 + iVar22)" * (cast_expression "(uint *)((int)puVar21 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar38 + uVar26" identifier + identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }\n      else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n        do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);\n        puVar21 = *ppmVar16;\n      }" { (do_statement "do {\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        } while (uVar26 + 1 == 0);" do (compound_statement "{\n          uVar26 = puVar21[1] + 1;\n          puVar21[1] = uVar26;\n          if (uVar26 != 0) goto LAB_000442f4;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 + 1;\n        }" { (expression_statement "uVar26 = puVar21[1] + 1;" (assignment_expression "uVar26 = puVar21[1] + 1" identifier = (binary_expression "puVar21[1] + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar21[1] = uVar26;" (assignment_expression "puVar21[1] = uVar26" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar26 != 0) goto LAB_000442f4;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000442f4;" goto statement_identifier ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + 1;" (assignment_expression "*puVar21 = uVar26 + 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) }) (else_clause "else {\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }" else (compound_statement "{\nLAB_000442f4:\n        puVar21 = *ppmVar16;\n      }" { (labeled_statement "LAB_000442f4:\n        puVar21 = *ppmVar16;" statement_identifier : (expression_statement "puVar21 = *ppmVar16;" (assignment_expression "puVar21 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;)) }))) (expression_statement "piVar33 = *ppiVar20;" (assignment_expression "piVar33 = *ppiVar20" identifier = (pointer_expression "*ppiVar20" * identifier)) ;) (expression_statement "iVar37 = *(int *)((int)puVar21 + iVar22);" (assignment_expression "iVar37 = *(int *)((int)puVar21 + iVar22)" identifier = (pointer_expression "*(int *)((int)puVar21 + iVar22)" * (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B);" (assignment_expression "iVar38 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar21,puVar21,fft_l,B)" (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 "(puVar21,puVar21,fft_l,B)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar37 = (int)piVar33 + iVar38 + iVar37;" (assignment_expression "iVar37 = (int)piVar33 + iVar38 + iVar37" identifier = (binary_expression "(int)piVar33 + iVar38 + iVar37" (binary_expression "(int)piVar33 + iVar38" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier)) ;) (expression_statement "uVar26 = iVar37 - 1;" (assignment_expression "uVar26 = iVar37 - 1" identifier = (binary_expression "iVar37 - 1" identifier - number_literal)) ;) (if_statement "if (iVar37 == 0) {\n        uVar26 = 0;\n      }" if (parenthesized_expression "(iVar37 == 0)" ( (binary_expression "iVar37 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar26 = 0;\n      }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar21 + iVar22) = iVar37 - uVar26;" (assignment_expression "*(int *)((int)puVar21 + iVar22) = iVar37 - uVar26" (pointer_expression "*(int *)((int)puVar21 + iVar22)" * (cast_expression "(int *)((int)puVar21 + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar22)" ( (binary_expression "(int)puVar21 + iVar22" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar37 - uVar26" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar21;" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar30 - uVar26;" (assignment_expression "*puVar21 = uVar30 - uVar26" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n        do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);\n      }" { (do_statement "do {\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        } while (uVar26 == 0);" do (compound_statement "{\n          uVar26 = puVar21[1];\n          puVar21[1] = uVar26 - 1;\n          if (uVar26 != 0) break;\n          puVar21 = puVar21 + 2;\n          uVar26 = *puVar21;\n          *puVar21 = uVar26 - 1;\n        }" { (expression_statement "uVar26 = puVar21[1];" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 - 1;" (assignment_expression "puVar21[1] = uVar26 - 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) (if_statement "if (uVar26 != 0) break;" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar21 = puVar21 + 2;" (assignment_expression "puVar21 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar21;" (assignment_expression "uVar26 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar26 - 1;" (assignment_expression "*puVar21 = uVar26 - 1" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar32 = piVar32 + 2;" (assignment_expression "piVar32 = piVar32 + 2" identifier = (binary_expression "piVar32 + 2" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + 2;" (assignment_expression "ppmVar16 = ppmVar16 + 2" identifier = (binary_expression "ppmVar16 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 < iVar36)" ( (binary_expression "iVar7 < iVar36" identifier < identifier) )) ;) }))) (labeled_statement "LAB_000446c4:\n  __tmp_marker = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (Ap == Bp) goto LAB_00045c00;" if (parenthesized_expression "(Ap == Bp)" ( (binary_expression "Ap == Bp" identifier == identifier) )) (goto_statement "goto LAB_00045c00;" goto statement_identifier ;)) (expression_statement "local_6c = (code *)0x0;" (assignment_expression "local_6c = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar36 = 0x270;" (assignment_expression "iVar36 = 0x270" identifier = number_literal) ;) (expression_statement "ppmVar16 = Bp;" (assignment_expression "ppmVar16 = Bp" identifier = identifier) ;) (labeled_statement "LAB_000427f4:\n  do {\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  } while( true );" statement_identifier : (do_statement "do {\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  } while( true );" do (compound_statement "{\n    if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    iVar36 = (int)B + 1;\n    ppmVar17 = (mp_ptr *)fft_l + iVar36;\n    mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);\n    puVar4 = PTR_LAB_0009d078;\n    ppmVar42 = ppmVar17 + (int)B;\n    *Bp = (mp_ptr)ppmVar17;\n    mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);\n    ppmVar16 = ppmVar17;\n    if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }\n    if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }\n    local_80 = K - 1;\n    if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }\n    iVar22 = local_80 * nprime;\n    iVar7 = pl * 2;\n    puVar21 = (uint *)((int)B + iVar22);\n    iVar37 = (int)puVar21 + 1;\n    if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }\n    if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }\nLAB_00043068:\n    iVar36 = iVar37 + pl * -2;\n    if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }\nLAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }\n    (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n    iVar36 = 0x230;\n    local_6c = (code *)0x1;\n    ppmVar16 = local_84;\n  }" { (if_statement "if ((int)B < iVar36) {\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }" if (parenthesized_expression "((int)B < iVar36)" ( (binary_expression "(int)B < iVar36" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);\n      puVar40 = puVar21 + (int)B;\n      if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }\n    }" { (expression_statement "puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8);" (assignment_expression "puVar21 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,(int)B * 8)" (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,(int)B * 8)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(int)B * 8" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (expression_statement "puVar40 = puVar21 + (int)B;" (assignment_expression "puVar40 = puVar21 + (int)B" identifier = (binary_expression "puVar21 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0 < K) {\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }" if (parenthesized_expression "(0 < K)" ( (binary_expression "0 < K" number_literal < identifier) )) (compound_statement "{\n        iVar36 = 0;\n        do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);\n      }" { (expression_statement "iVar36 = 0;" (assignment_expression "iVar36 = 0" identifier = number_literal) ;) (do_statement "do {\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        } while (K != iVar36);" do (compound_statement "{\n          pmVar6 = local_84[iVar36];\n          pmVar29 = ppmVar16[iVar36];\n          if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }\n          pmVar28 = pmVar6 + (int)B;\n          if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }\n          iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);\n          if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }\nLAB_00043ce4:\n          *pmVar28 = mVar23;\n          iVar36 = iVar36 + 1;\n        }" { (expression_statement "pmVar6 = local_84[iVar36];" (assignment_expression "pmVar6 = local_84[iVar36]" identifier = (subscript_expression "local_84[iVar36]" identifier [ identifier ])) ;) (expression_statement "pmVar29 = ppmVar16[iVar36];" (assignment_expression "pmVar29 = ppmVar16[iVar36]" identifier = (subscript_expression "ppmVar16[iVar36]" identifier [ identifier ])) ;) (if_statement "if (local_84 == ppmVar16) {\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }\n          else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }" if (parenthesized_expression "(local_84 == ppmVar16)" ( (binary_expression "local_84 == ppmVar16" identifier == identifier) )) (compound_statement "{\n            (*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);\n          }" { (expression_statement "(*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B);" (call_expression "(*(code *)PTR___gmpn_sqr_0009d394)(puVar21,pmVar6,B)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_0009d394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_0009d394" * (cast_expression "(code *)PTR___gmpn_sqr_0009d394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar21,pmVar6,B)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }" else (compound_statement "{\n            (*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);\n          }" { (expression_statement "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B);" (call_expression "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar21,pmVar29,pmVar6,B)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_0009d364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_0009d364" * (cast_expression "(code *)PTR___gmpn_mul_n_0009d364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar21,pmVar29,pmVar6,B)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "pmVar28 = pmVar6 + (int)B;" (assignment_expression "pmVar28 = pmVar6 + (int)B" identifier = (binary_expression "pmVar6 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (*pmVar28 == 0) {\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }\n          else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(*pmVar28 == 0)" ( (binary_expression "*pmVar28 == 0" (pointer_expression "*pmVar28" * identifier) == number_literal) )) (compound_statement "{\n            uVar26 = 0;\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }\n          }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pmVar29[(int)B] != 0) {\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }" if (parenthesized_expression "(pmVar29[(int)B] != 0)" ( (binary_expression "pmVar29[(int)B] != 0" (subscript_expression "pmVar29[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) != number_literal) )) (compound_statement "{\nLAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);\n              uVar26 = uVar26 + iVar7 + *pmVar28;\n              goto LAB_00043d68;\n            }" { (labeled_statement "LAB_00043d3c:\n              iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);" statement_identifier : (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar6,B)" (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 "(puVar40,puVar40,pmVar6,B)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "uVar26 = uVar26 + iVar7 + *pmVar28;" (assignment_expression "uVar26 = uVar26 + iVar7 + *pmVar28" identifier = (binary_expression "uVar26 + iVar7 + *pmVar28" (binary_expression "uVar26 + iVar7" identifier + identifier) + (pointer_expression "*pmVar28" * identifier))) ;) (goto_statement "goto LAB_00043d68;" goto statement_identifier ;) })) }) (else_clause "else {\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }" else (compound_statement "{\n            uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);\n            if (pmVar29[(int)B] != 0) goto LAB_00043d3c;\nLAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n            if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }\n          }" { (expression_statement "uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B);" (assignment_expression "uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar40,puVar40,pmVar29,B)" (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 "(puVar40,puVar40,pmVar29,B)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (pmVar29[(int)B] != 0) goto LAB_00043d3c;" if (parenthesized_expression "(pmVar29[(int)B] != 0)" ( (binary_expression "pmVar29[(int)B] != 0" (subscript_expression "pmVar29[(int)B]" identifier [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) != number_literal) )) (goto_statement "goto LAB_00043d3c;" goto statement_identifier ;)) (labeled_statement "LAB_00043d68:\n            pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" statement_identifier : (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)) {\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }" if (parenthesized_expression "(((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0))" ( (binary_expression "((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))) &&\n               (uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)" (parenthesized_expression "((((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2))))" ( (binary_expression "(((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)) &&\n                ((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))" (parenthesized_expression "(((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1))" ( (binary_expression "((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)) &&\n                 (1 < (int)B << 1)" (parenthesized_expression "((uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26))" ( (binary_expression "(uVar26 != 0) &&\n                  (uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)" (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26)" ( (comma_expression "uVar30 = *puVar21, *puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26" (assignment_expression "uVar30 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) , (comma_expression "*puVar21 = uVar26 + uVar30, uVar26 + uVar30 < uVar26" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) , (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)B << 1)" ( (binary_expression "1 < (int)B << 1" number_literal < (binary_expression "(int)B << 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) )) && (parenthesized_expression "((uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)))" ( (parenthesized_expression "(uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2))" ( (comma_expression "uVar26 = puVar21[1], puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)" (assignment_expression "uVar26 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) , (comma_expression "puVar21[1] = uVar26 + 1, uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) , (binary_expression "uVar26 + 1 == 0 &&\n                 ((int)B << 1 != 2)" (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) && (parenthesized_expression "((int)B << 1 != 2)" ( (binary_expression "(int)B << 1 != 2" (binary_expression "(int)B << 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != number_literal) ))))) )) ))) )) && (parenthesized_expression "(uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0)" ( (comma_expression "uVar26 = puVar21[2], puVar21[2] = uVar26 + 1, uVar26 + 1 == 0" (assignment_expression "uVar26 = puVar21[2]" identifier = (subscript_expression "puVar21[2]" identifier [ number_literal ])) , (comma_expression "puVar21[2] = uVar26 + 1, uVar26 + 1 == 0" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) , (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n              puVar19 = puVar21 + 3;\n              do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "puVar19 = puVar21 + 3;" (assignment_expression "puVar19 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                if (puVar21 + (int)B * 2 == puVar19) break;\n                uVar26 = *puVar19;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n                pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar21 + (int)B * 2 == puVar19) break;" if (parenthesized_expression "(puVar21 + (int)B * 2 == puVar19)" ( (binary_expression "puVar21 + (int)B * 2 == puVar19" (binary_expression "puVar21 + (int)B * 2" identifier + (binary_expression "(int)B * 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B);" (assignment_expression "iVar7 = (*pcVar14)(pmVar6,puVar21,puVar40,B)" identifier = (call_expression "(*pcVar14)(pmVar6,puVar21,puVar40,B)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pmVar6,puVar21,puVar40,B)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)) {\nLAB_00043d00:\n            mVar23 = 0;\n          }\n          else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }" if (parenthesized_expression "((iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0))" ( (binary_expression "(iVar7 == 0) || (mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0)" ( (comma_expression "mVar23 = *pmVar6, *pmVar6 = mVar23 + 1, mVar23 + 1 != 0" (assignment_expression "mVar23 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) , (comma_expression "*pmVar6 = mVar23 + 1, mVar23 + 1 != 0" (assignment_expression "*pmVar6 = mVar23 + 1" (pointer_expression "*pmVar6" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) , (binary_expression "mVar23 + 1 != 0" (binary_expression "mVar23 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_00043d00:\n            mVar23 = 0;\n          }" { (labeled_statement "LAB_00043d00:\n            mVar23 = 0;" statement_identifier : (expression_statement "mVar23 = 0;" (assignment_expression "mVar23 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }" else (compound_statement "{\n            mVar23 = 1;\n            if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }\n          }" { (expression_statement "mVar23 = 1;" (assignment_expression "mVar23 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)B) {\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }\n              goto LAB_00043d00;\n            }" { (expression_statement "mVar23 = pmVar6[1];" (assignment_expression "mVar23 = pmVar6[1]" identifier = (subscript_expression "pmVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar6[1] = mVar23 + 1;" (assignment_expression "pmVar6[1] = mVar23 + 1" (subscript_expression "pmVar6[1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                mVar23 = 1;\n                if (B == (uint *)0x2) goto LAB_00043ce4;\n                mVar23 = pmVar6[2];\n                pmVar6[2] = mVar23 + 1;\n                if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }\n              }" { (expression_statement "mVar23 = 1;" (assignment_expression "mVar23 = 1" identifier = number_literal) ;) (if_statement "if (B == (uint *)0x2) goto LAB_00043ce4;" if (parenthesized_expression "(B == (uint *)0x2)" ( (binary_expression "B == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar6[2];" (assignment_expression "mVar23 = pmVar6[2]" identifier = (subscript_expression "pmVar6[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar6[2] = mVar23 + 1;" (assignment_expression "pmVar6[2] = mVar23 + 1" (subscript_expression "pmVar6[2]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  pmVar29 = pmVar6 + 3;\n                  do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);\n                }" { (expression_statement "pmVar29 = pmVar6 + 3;" (assignment_expression "pmVar29 = pmVar6 + 3" identifier = (binary_expression "pmVar6 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 + 1 == 0);" do (compound_statement "{\n                    if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 + 1;\n                    pmVar29 = pmVar29 + 1;\n                  }" { (if_statement "if (pmVar28 == pmVar29) {\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }" if (parenthesized_expression "(pmVar28 == pmVar29)" ( (binary_expression "pmVar28 == pmVar29" identifier == identifier) )) (compound_statement "{\n                      mVar23 = 1;\n                      goto LAB_00043ce4;\n                    }" { (expression_statement "mVar23 = 1;" (assignment_expression "mVar23 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;) })) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 + 1;" (assignment_expression "*pmVar29 = mVar23 + 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00043d00;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043ce4:\n          *pmVar28 = mVar23;" statement_identifier : (expression_statement "*pmVar28 = mVar23;" (assignment_expression "*pmVar28 = mVar23" (pointer_expression "*pmVar28" * identifier) = identifier) ;)) (expression_statement "iVar36 = iVar36 + 1;" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(K != iVar36)" ( (binary_expression "K != iVar36" identifier != identifier) )) ;) })) }) (else_clause "else {\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }" else (compound_statement "{\n      uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);\n      iVar7 = 1 << (uVar26 & 0x1f);\n      if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }\n      iVar37 = iVar7;\n      if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }\n      iVar22 = (int)B >> (uVar26 & 0x1f);\n      if (iVar37 == 0) {\n        trap(7);\n      }\n      iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;\n      iVar38 = iVar37;\n      if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }\n      uVar30 = iVar38 >> 5;\n      if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }\n      if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }\n      iVar36 = 4 << (uVar26 & 0x1f);\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar38 = uVar30 + 1;\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);\n      iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);\n      uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);\n      iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;\n      piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;\n      iVar37 = iVar37 >> (uVar26 & 0x1f);\n      if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }\n      if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }\n    }" { (expression_statement "uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c);" (assignment_expression "uVar26 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(B,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(B,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = 1 << (uVar26 & 0x1f);" (assignment_expression "iVar7 = 1 << (uVar26 & 0x1f)" identifier = (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar7 - 1U & (uint)B) != 0) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }" if (parenthesized_expression "((iVar7 - 1U & (uint)B) != 0)" ( (binary_expression "(iVar7 - 1U & (uint)B) != 0" (parenthesized_expression "(iVar7 - 1U & (uint)B)" ( (binary_expression "iVar7 - 1U & (uint)B" (binary_expression "iVar7 - 1U" identifier - number_literal) & (cast_expression "(uint)B" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);\n        return mVar23;\n      }" { (expression_statement "mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20);" (assignment_expression "mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1c1,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d20)" ( (binary_expression "PTR_gmp_snprintf_final_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_gmp_snprintf_final_0009d06c + 0x4d20" identifier + number_literal) )))) ;) (return_statement "return mVar23;" return identifier ;) })) (expression_statement "iVar37 = iVar7;" (assignment_expression "iVar37 = iVar7" identifier = identifier) ;) (if_statement "if (iVar7 < 0x20) {\n        iVar37 = 0x20;\n      }" if (parenthesized_expression "(iVar7 < 0x20)" ( (binary_expression "iVar7 < 0x20" identifier < number_literal) )) (compound_statement "{\n        iVar37 = 0x20;\n      }" { (expression_statement "iVar37 = 0x20;" (assignment_expression "iVar37 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar22 = (int)B >> (uVar26 & 0x1f);" (assignment_expression "iVar22 = (int)B >> (uVar26 & 0x1f)" identifier = (binary_expression "(int)B >> (uVar26 & 0x1f)" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar37 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar37 == 0)" ( (binary_expression "iVar37 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37;" (assignment_expression "iVar37 = ((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37" identifier = (binary_expression "((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37) *\n               iVar37" (parenthesized_expression "((int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37)" ( (binary_expression "(int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37) / iVar37" (cast_expression "(int)((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37)" ( (binary_expression "(((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2 + iVar37" (binary_expression "(((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26 + 2" (binary_expression "(((int)B << 5) >> (uVar26 & 0x1f)) * 2 + uVar26" (binary_expression "(((int)B << 5) >> (uVar26 & 0x1f)) * 2" (parenthesized_expression "(((int)B << 5) >> (uVar26 & 0x1f))" ( (binary_expression "((int)B << 5) >> (uVar26 & 0x1f)" (parenthesized_expression "((int)B << 5)" ( (binary_expression "(int)B << 5" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )) >> (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar38 = iVar37;" (assignment_expression "iVar38 = iVar37" identifier = identifier) ;) (if_statement "if (iVar37 < 0) {\n        iVar38 = iVar37 + 0x1f;\n      }" if (parenthesized_expression "(iVar37 < 0)" ( (binary_expression "iVar37 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar38 = iVar37 + 0x1f;\n      }" { (expression_statement "iVar38 = iVar37 + 0x1f;" (assignment_expression "iVar38 = iVar37 + 0x1f" identifier = (binary_expression "iVar37 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar30 = iVar38 >> 5;" (assignment_expression "uVar30 = iVar38 >> 5" identifier = (binary_expression "iVar38 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar36 <= (int)uVar30) {\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }" if (parenthesized_expression "(iVar36 <= (int)uVar30)" ( (binary_expression "iVar36 <= (int)uVar30" identifier <= (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }\n      }" { (while_statement "while( true ) {\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);\n          iVar36 = 1 << (uVar8 & 0x1f);\n          if ((iVar36 - 1U & uVar30) == 0) break;\n          uVar30 = -iVar36 & (uVar30 + iVar36) - 1;\n          iVar37 = uVar30 << 5;\n        }" { (expression_statement "uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c);" (assignment_expression "uVar8 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar30,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar30,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar36 = 1 << (uVar8 & 0x1f);" (assignment_expression "iVar36 = 1 << (uVar8 & 0x1f)" identifier = (binary_expression "1 << (uVar8 & 0x1f)" number_literal << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar36 - 1U & uVar30) == 0) break;" if (parenthesized_expression "((iVar36 - 1U & uVar30) == 0)" ( (binary_expression "(iVar36 - 1U & uVar30) == 0" (parenthesized_expression "(iVar36 - 1U & uVar30)" ( (binary_expression "iVar36 - 1U & uVar30" (binary_expression "iVar36 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar30 = -iVar36 & (uVar30 + iVar36) - 1;" (assignment_expression "uVar30 = -iVar36 & (uVar30 + iVar36) - 1" identifier = (binary_expression "-iVar36 & (uVar30 + iVar36) - 1" (unary_expression "-iVar36" - identifier) & (binary_expression "(uVar30 + iVar36) - 1" (parenthesized_expression "(uVar30 + iVar36)" ( (binary_expression "uVar30 + iVar36" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar37 = uVar30 << 5;" (assignment_expression "iVar37 = uVar30 << 5" identifier = (binary_expression "uVar30 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)B <= (int)uVar30) {\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }" if (parenthesized_expression "((int)B <= (int)uVar30)" ( (binary_expression "(int)B <= (int)uVar30" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);\n        return mVar23;\n      }" { (expression_statement "mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34);" (assignment_expression "mVar23 = (*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                           (PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_gmp_snprintf_final_0009d06c + 0x4d14,0x1d7,\n                            PTR_gmp_snprintf_final_0009d06c + 0x4d34)" ( (binary_expression "PTR_gmp_snprintf_final_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_gmp_snprintf_final_0009d06c + 0x4d34" identifier + number_literal) )))) ;) (return_statement "return mVar23;" return identifier ;) })) (expression_statement "iVar36 = 4 << (uVar26 & 0x1f);" (assignment_expression "iVar36 = 4 << (uVar26 & 0x1f)" identifier = (binary_expression "4 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36)" (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,iVar36)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier )))) ;) (expression_statement "iVar38 = uVar30 + 1;" (assignment_expression "iVar38 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar36)" (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,iVar36)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier )))) ;) (expression_statement "iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2);" (assignment_expression "iVar36 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                         (&__tmp_marker,(iVar38 * 2 << (uVar26 & 0x1f)) << 2)" (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,(iVar38 * 2 << (uVar26 & 0x1f)) << 2)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(iVar38 * 2 << (uVar26 & 0x1f)) << 2" (parenthesized_expression "(iVar38 * 2 << (uVar26 & 0x1f))" ( (binary_expression "iVar38 * 2 << (uVar26 & 0x1f)" (binary_expression "iVar38 * 2" identifier * number_literal) << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8);" (assignment_expression "uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,iVar38 * 8)" (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,iVar38 * 8)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "iVar38 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4;" (assignment_expression "iVar38 = iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4" identifier = (binary_expression "iVar36 + (iVar38 << (uVar26 & 0x1f)) * 4" identifier + (binary_expression "(iVar38 << (uVar26 & 0x1f)) * 4" (parenthesized_expression "(iVar38 << (uVar26 & 0x1f))" ( (binary_expression "iVar38 << (uVar26 & 0x1f)" identifier << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4);" (assignment_expression "piVar32 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                 (&__tmp_marker,(uVar26 + 1) * 4)" (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,(uVar26 + 1) * 4)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(uVar26 + 1) * 4" (parenthesized_expression "(uVar26 + 1)" ( (binary_expression "uVar26 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))\n      ;" (assignment_expression "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker,8 << (uVar26 & 0x1f))" (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,8 << (uVar26 & 0x1f))" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "8 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "iVar37 = iVar37 >> (uVar26 & 0x1f);" (assignment_expression "iVar37 = iVar37 >> (uVar26 & 0x1f)" identifier = (binary_expression "iVar37 >> (uVar26 & 0x1f)" identifier >> (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((int)uVar26 < 0) {\n        *(undefined4 *)*piVar32 = 0;\n      }\n      else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }" if (parenthesized_expression "((int)uVar26 < 0)" ( (binary_expression "(int)uVar26 < 0" (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        *(undefined4 *)*piVar32 = 0;\n      }" { (expression_statement "*(undefined4 *)*piVar32 = 0;" (assignment_expression "*(undefined4 *)*piVar32 = 0" (pointer_expression "*(undefined4 *)*piVar32" * (cast_expression "(undefined4 *)*piVar32" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) = number_literal) ;) }) (else_clause "else {\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }" else (compound_statement "{\n        uVar8 = 0;\n        piVar33 = piVar32;\n        do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);\n        *(undefined4 *)*piVar32 = 0;\n        if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "piVar33 = piVar32;" (assignment_expression "piVar33 = piVar32" identifier = identifier) ;) (do_statement "do {\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        } while (uVar26 + 1 != uVar8);" do (compound_statement "{\n          uVar2 = uVar8 & 0x1f;\n          *piVar33 = iVar12;\n          uVar8 = uVar8 + 1;\n          iVar12 = iVar12 + (4 << uVar2);\n          piVar33 = piVar33 + 1;\n        }" { (expression_statement "uVar2 = uVar8 & 0x1f;" (assignment_expression "uVar2 = uVar8 & 0x1f" identifier = (binary_expression "uVar8 & 0x1f" identifier & number_literal)) ;) (expression_statement "*piVar33 = iVar12;" (assignment_expression "*piVar33 = iVar12" (pointer_expression "*piVar33" * identifier) = identifier) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 + (4 << uVar2);" (assignment_expression "iVar12 = iVar12 + (4 << uVar2)" identifier = (binary_expression "iVar12 + (4 << uVar2)" identifier + (parenthesized_expression "(4 << uVar2)" ( (binary_expression "4 << uVar2" number_literal << identifier) )))) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 != uVar8)" ( (binary_expression "uVar26 + 1 != uVar8" (binary_expression "uVar26 + 1" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)*piVar32 = 0;" (assignment_expression "*(undefined4 *)*piVar32 = 0" (pointer_expression "*(undefined4 *)*piVar32" * (cast_expression "(undefined4 *)*piVar32" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) = number_literal) ;) (if_statement "if (0 < (int)uVar26) {\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }" if (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar12 = 1;\n          piVar33 = piVar32;\n          do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);\n        }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "piVar33 = piVar32;" (assignment_expression "piVar33 = piVar32" identifier = identifier) ;) (do_statement "do {\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          } while (piVar32 + uVar26 != piVar33);" do (compound_statement "{\n            piVar27 = (int *)*piVar33;\n            piVar45 = piVar27 + iVar12;\n            piVar41 = (int *)(piVar33[1] + iVar12 * 4);\n            do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);\n            piVar33 = piVar33 + 1;\n            iVar12 = iVar12 << 1;\n          }" { (expression_statement "piVar27 = (int *)*piVar33;" (assignment_expression "piVar27 = (int *)*piVar33" identifier = (cast_expression "(int *)*piVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar33" * identifier))) ;) (expression_statement "piVar45 = piVar27 + iVar12;" (assignment_expression "piVar45 = piVar27 + iVar12" identifier = (binary_expression "piVar27 + iVar12" identifier + identifier)) ;) (expression_statement "piVar41 = (int *)(piVar33[1] + iVar12 * 4);" (assignment_expression "piVar41 = (int *)(piVar33[1] + iVar12 * 4)" identifier = (cast_expression "(int *)(piVar33[1] + iVar12 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar33[1] + iVar12 * 4)" ( (binary_expression "piVar33[1] + iVar12 * 4" (subscript_expression "piVar33[1]" identifier [ number_literal ]) + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            } while (piVar45 != piVar27);" do (compound_statement "{\n              iVar13 = *piVar27;\n              piVar27 = piVar27 + 1;\n              piVar41[-iVar12] = iVar13 * 2;\n              *piVar41 = iVar13 * 2 + 1;\n              piVar41 = piVar41 + 1;\n            }" { (expression_statement "iVar13 = *piVar27;" (assignment_expression "iVar13 = *piVar27" identifier = (pointer_expression "*piVar27" * identifier)) ;) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" identifier = (binary_expression "piVar27 + 1" identifier + number_literal)) ;) (expression_statement "piVar41[-iVar12] = iVar13 * 2;" (assignment_expression "piVar41[-iVar12] = iVar13 * 2" (subscript_expression "piVar41[-iVar12]" identifier [ (unary_expression "-iVar12" - identifier) ]) = (binary_expression "iVar13 * 2" identifier * number_literal)) ;) (expression_statement "*piVar41 = iVar13 * 2 + 1;" (assignment_expression "*piVar41 = iVar13 * 2 + 1" (pointer_expression "*piVar41" * identifier) = (binary_expression "iVar13 * 2 + 1" (binary_expression "iVar13 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "piVar41 = piVar41 + 1;" (assignment_expression "piVar41 = piVar41 + 1" identifier = (binary_expression "piVar41 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar45 != piVar27)" ( (binary_expression "piVar45 != piVar27" identifier != identifier) )) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 << 1;" (assignment_expression "iVar12 = iVar12 << 1" identifier = (binary_expression "iVar12 << 1" identifier << number_literal)) ;) }) while (parenthesized_expression "(piVar32 + uVar26 != piVar33)" ( (binary_expression "piVar32 + uVar26 != piVar33" (binary_expression "piVar32 + uVar26" identifier + identifier) != identifier) )) ;) })) }))) (if_statement "if (0 < K) {\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }" if (parenthesized_expression "(0 < K)" ( (binary_expression "0 < K" number_literal < identifier) )) (compound_statement "{\n        iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n        iVar12 = 0;\n        do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);\n      }" { (expression_statement "iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar22 << (uVar26 & 0x1f)) + 1" identifier = (binary_expression "(iVar22 << (uVar26 & 0x1f)) + 1" (parenthesized_expression "(iVar22 << (uVar26 & 0x1f))" ( (binary_expression "iVar22 << (uVar26 & 0x1f)" identifier << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x2170)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x2170)" ( (binary_expression "PTR_LAB_0009d078 + 0x2170" identifier + number_literal) )))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0xd98)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0xd98)" ( (binary_expression "PTR_LAB_0009d078 + 0xd98" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        } while (K != iVar12);" do (compound_statement "{\n          ppmVar17 = local_84 + iVar12;\n          pmVar6 = *ppmVar17;\n          pmVar28 = pmVar6 + (int)B;\n          pmVar29 = pmVar6;\n          if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }\n          if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }\n          iVar12 = iVar12 + 1;\n          mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);\n          (*ppmVar17)[(int)B] = mVar23;\n        }" { (expression_statement "ppmVar17 = local_84 + iVar12;" (assignment_expression "ppmVar17 = local_84 + iVar12" identifier = (binary_expression "local_84 + iVar12" identifier + identifier)) ;) (expression_statement "pmVar6 = *ppmVar17;" (assignment_expression "pmVar6 = *ppmVar17" identifier = (pointer_expression "*ppmVar17" * identifier)) ;) (expression_statement "pmVar28 = pmVar6 + (int)B;" (assignment_expression "pmVar28 = pmVar6 + (int)B" identifier = (binary_expression "pmVar6 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar29 = pmVar6;" (assignment_expression "pmVar29 = pmVar6" identifier = identifier) ;) (if_statement "if (*pmVar28 != 0) {\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }" if (parenthesized_expression "(*pmVar28 != 0)" ( (binary_expression "*pmVar28 != 0" (pointer_expression "*pmVar28" * identifier) != number_literal) )) (compound_statement "{\n            do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n            if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }\n          }" { (do_statement "do {\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);" do (compound_statement "{\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            }" { (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) (if_statement "if (*pmVar28 == 0) {\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }\n            else {\n              *pmVar28 = 0;\n            }" if (parenthesized_expression "(*pmVar28 == 0)" ( (binary_expression "*pmVar28 == 0" (pointer_expression "*pmVar28" * identifier) == number_literal) )) (compound_statement "{\n              pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);\n              *pmVar28 = 1;\n            }" { (expression_statement "pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4);" (assignment_expression "pmVar6 = (mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4)" identifier = (call_expression "(mp_ptr)(*(code *)PTR_memset_0009d2e8)(pmVar6,0,(int)B * 4)" (call_expression "(mp_ptr)(*(code *)PTR_memset_0009d2e8)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(*(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 "(pmVar6,0,(int)B * 4)" ( identifier , number_literal , (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "*pmVar28 = 1;" (assignment_expression "*pmVar28 = 1" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n              *pmVar28 = 0;\n            }" else (compound_statement "{\n              *pmVar28 = 0;\n            }" { (expression_statement "*pmVar28 = 0;" (assignment_expression "*pmVar28 = 0" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) }))) })) (if_statement "if (local_84 == ppmVar16) {\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }\n          else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }" if (parenthesized_expression "(local_84 == ppmVar16)" ( (binary_expression "local_84 == ppmVar16" identifier == identifier) )) (compound_statement "{\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n          }" { (expression_statement "(*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);" (call_expression "(*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }" else (compound_statement "{\n            pmVar28 = ppmVar16[iVar12];\n            pmVar18 = pmVar28 + (int)B;\n            pmVar29 = pmVar28;\n            if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }\n            (*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);\n            (*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);\n          }" { (expression_statement "pmVar28 = ppmVar16[iVar12];" (assignment_expression "pmVar28 = ppmVar16[iVar12]" identifier = (subscript_expression "ppmVar16[iVar12]" identifier [ identifier ])) ;) (expression_statement "pmVar18 = pmVar28 + (int)B;" (assignment_expression "pmVar18 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar29 = pmVar28;" (assignment_expression "pmVar29 = pmVar28" identifier = identifier) ;) (if_statement "if (*pmVar18 != 0) {\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }" if (parenthesized_expression "(*pmVar18 != 0)" ( (binary_expression "*pmVar18 != 0" (pointer_expression "*pmVar18" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);\n              if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }\n            }" { (do_statement "do {\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 == 0);" do (compound_statement "{\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                pmVar29 = pmVar29 + 1;\n              }" { (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) (if_statement "if (*pmVar18 == 0) {\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }\n              else {\n                *pmVar18 = 0;\n              }" if (parenthesized_expression "(*pmVar18 == 0)" ( (binary_expression "*pmVar18 == 0" (pointer_expression "*pmVar18" * identifier) == number_literal) )) (compound_statement "{\n                (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n                *pmVar18 = 1;\n              }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4)" (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 "(pmVar28,0,(int)B * 4)" ( identifier , number_literal , (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) ;) (expression_statement "*pmVar18 = 1;" (assignment_expression "*pmVar18 = 1" (pointer_expression "*pmVar18" * identifier) = number_literal) ;) }) (else_clause "else {\n                *pmVar18 = 0;\n              }" else (compound_statement "{\n                *pmVar18 = 0;\n              }" { (expression_statement "*pmVar18 = 0;" (assignment_expression "*pmVar18 = 0" (pointer_expression "*pmVar18" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11);" (call_expression "(*pcVar15)(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar36,uVar9,iVar7,uVar30,pmVar6,iVar13,iVar22,iVar37,uVar11)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11);" (call_expression "(*pcVar15)(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar38,uVar10,iVar7,uVar30,ppmVar16[iVar12],iVar13,iVar22,iVar37,uVar11)" ( identifier , identifier , identifier , identifier , (subscript_expression "ppmVar16[iVar12]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c);" (assignment_expression "mVar23 = (*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c)" identifier = (call_expression "(*pcVar14)(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(*ppmVar17,B,uVar26,uVar9,uVar10,iVar38,uVar30,iVar22,iVar37,piVar32,\n                              uVar11,local_6c)" ( (pointer_expression "*ppmVar17" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*ppmVar17)[(int)B] = mVar23;" (assignment_expression "(*ppmVar17)[(int)B] = mVar23" (subscript_expression "(*ppmVar17)[(int)B]" (parenthesized_expression "(*ppmVar17)" ( (pointer_expression "*ppmVar17" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }) while (parenthesized_expression "(K != iVar12)" ( (binary_expression "K != iVar12" identifier != identifier) )) ;) })) }))) (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 "()" ( ))) ;) })) (expression_statement "iVar36 = (int)B + 1;" (assignment_expression "iVar36 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "ppmVar17 = (mp_ptr *)fft_l + iVar36;" (assignment_expression "ppmVar17 = (mp_ptr *)fft_l + iVar36" identifier = (binary_expression "(mp_ptr *)fft_l + iVar36" (cast_expression "(mp_ptr *)fft_l" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + identifier)) ;) (expression_statement "mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l);" (call_expression "mpn_fft_fftinv(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l)" identifier (argument_list "(local_84,K,local_70,(mp_size_t)B,(mp_ptr)fft_l)" ( identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (expression_statement "puVar4 = PTR_LAB_0009d078;" (assignment_expression "puVar4 = PTR_LAB_0009d078" identifier = identifier) ;) (expression_statement "ppmVar42 = ppmVar17 + (int)B;" (assignment_expression "ppmVar42 = ppmVar17 + (int)B" identifier = (binary_expression "ppmVar17 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*Bp = (mp_ptr)ppmVar17;" (assignment_expression "*Bp = (mp_ptr)ppmVar17" (pointer_expression "*Bp" * identifier) = (cast_expression "(mp_ptr)ppmVar17" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B);" (call_expression "mpn_fft_mul_2exp_modF((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B)" identifier (argument_list "((mp_ptr)ppmVar17,*local_84,(int)B * 0x40 - k,(mp_size_t)B)" ( (cast_expression "(mp_ptr)ppmVar17" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) , (pointer_expression "*local_84" * identifier) , (binary_expression "(int)B * 0x40 - k" (binary_expression "(int)B * 0x40" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ))) ;) (expression_statement "ppmVar16 = ppmVar17;" (assignment_expression "ppmVar16 = ppmVar17" identifier = identifier) ;) (if_statement "if (*ppmVar42 != (mp_ptr)0x0) {\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }" if (parenthesized_expression "(*ppmVar42 != (mp_ptr)0x0)" ( (binary_expression "*ppmVar42 != (mp_ptr)0x0" (pointer_expression "*ppmVar42" * identifier) != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);\n      if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }\n    }" { (do_statement "do {\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      } while (pmVar29 == (mp_ptr)0x0);" do (compound_statement "{\n        pmVar29 = *ppmVar16;\n        *ppmVar16 = (mp_ptr)((int)pmVar29 + -1);\n        ppmVar16 = ppmVar16 + 1;\n      }" { (expression_statement "pmVar29 = *ppmVar16;" (assignment_expression "pmVar29 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) (expression_statement "*ppmVar16 = (mp_ptr)((int)pmVar29 + -1);" (assignment_expression "*ppmVar16 = (mp_ptr)((int)pmVar29 + -1)" (pointer_expression "*ppmVar16" * identifier) = (call_expression "(mp_ptr)((int)pmVar29 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar29 + -1)" ( (binary_expression "(int)pmVar29 + -1" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "ppmVar16 = ppmVar16 + 1;" (assignment_expression "ppmVar16 = ppmVar16 + 1" identifier = (binary_expression "ppmVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar29 == (mp_ptr)0x0)" ( (binary_expression "pmVar29 == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (*ppmVar42 == (mp_ptr)0x0) {\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }\n      else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }" if (parenthesized_expression "(*ppmVar42 == (mp_ptr)0x0)" ( (binary_expression "*ppmVar42 == (mp_ptr)0x0" (pointer_expression "*ppmVar42" * identifier) == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }\n        *ppmVar42 = (mp_ptr)&DAT_00000001;\n      }" { (if_statement "if (B != (uint *)0x0) {\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }" if (parenthesized_expression "(B != (uint *)0x0)" ( (binary_expression "B != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);\n        }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(ppmVar17,0,(int)B * 4)" (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 "(ppmVar17,0,(int)B * 4)" ( identifier , number_literal , (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) ;) })) (expression_statement "*ppmVar42 = (mp_ptr)&DAT_00000001;" (assignment_expression "*ppmVar42 = (mp_ptr)&DAT_00000001" (pointer_expression "*ppmVar42" * identifier) = (binary_expression "(mp_ptr)&DAT_00000001" (parenthesized_expression "(mp_ptr)" ( identifier )) & identifier)) ;) }) (else_clause "else {\n        *ppmVar42 = (mp_ptr)0x0;\n      }" else (compound_statement "{\n        *ppmVar42 = (mp_ptr)0x0;\n      }" { (expression_statement "*ppmVar42 = (mp_ptr)0x0;" (assignment_expression "*ppmVar42 = (mp_ptr)0x0" (pointer_expression "*ppmVar42" * identifier) = (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) }))) })) (if_statement "if (1 < K) {\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }" if (parenthesized_expression "(1 < K)" ( (binary_expression "1 < K" number_literal < identifier) )) (compound_statement "{\n      ppmVar42 = local_84 + 1;\n      iVar7 = (int)B * 0x40 - ((K + -1) * l + k);\n      ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));\n      ppmVar16 = Bp;\n      do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);\n    }" { (expression_statement "ppmVar42 = local_84 + 1;" (assignment_expression "ppmVar42 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = (int)B * 0x40 - ((K + -1) * l + k);" (assignment_expression "iVar7 = (int)B * 0x40 - ((K + -1) * l + k)" identifier = (binary_expression "(int)B * 0x40 - ((K + -1) * l + k)" (binary_expression "(int)B * 0x40" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - (parenthesized_expression "((K + -1) * l + k)" ( (binary_expression "(K + -1) * l + k" (binary_expression "(K + -1) * l" (parenthesized_expression "(K + -1)" ( (binary_expression "K + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)));" (assignment_expression "ppmVar17 = (mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)))" identifier = (cast_expression "(mp_ptr *)((int)local_84 + (4 << (k & 0x1fU)))" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + (4 << (k & 0x1fU)))" ( (binary_expression "(int)local_84 + (4 << (k & 0x1fU))" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (k & 0x1fU))" ( (binary_expression "4 << (k & 0x1fU)" number_literal << (parenthesized_expression "(k & 0x1fU)" ( (binary_expression "k & 0x1fU" identifier & number_literal) ))) ))) )))) ;) (expression_statement "ppmVar16 = Bp;" (assignment_expression "ppmVar16 = Bp" identifier = identifier) ;) (do_statement "do {\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      } while (ppmVar17 != ppmVar42);" do (compound_statement "{\n        ppmVar16 = ppmVar16 + 1;\n        pmVar28 = ppmVar42[-1];\n        *ppmVar16 = pmVar28;\n        pmVar6 = pmVar28 + (int)B;\n        (*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);\n        pmVar29 = pmVar28;\n        if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }\n        ppmVar42 = ppmVar42 + 1;\n        iVar7 = iVar7 + l;\n        local_84 = (mp_ptr *)fft_l;\n      }" { (expression_statement "ppmVar16 = ppmVar16 + 1;" (assignment_expression "ppmVar16 = ppmVar16 + 1" identifier = (binary_expression "ppmVar16 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28 = ppmVar42[-1];" (assignment_expression "pmVar28 = ppmVar42[-1]" identifier = (subscript_expression "ppmVar42[-1]" identifier [ number_literal ])) ;) (expression_statement "*ppmVar16 = pmVar28;" (assignment_expression "*ppmVar16 = pmVar28" (pointer_expression "*ppmVar16" * identifier) = identifier) ;) (expression_statement "pmVar6 = pmVar28 + (int)B;" (assignment_expression "pmVar6 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "(*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B);" (call_expression "(*(code *)(puVar4 + 0x790))(pmVar28,*ppmVar42,iVar7,B)" (parenthesized_expression "(*(code *)(puVar4 + 0x790))" ( (pointer_expression "*(code *)(puVar4 + 0x790)" * (cast_expression "(code *)(puVar4 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x790)" ( (binary_expression "puVar4 + 0x790" identifier + number_literal) )))) )) (argument_list "(pmVar28,*ppmVar42,iVar7,B)" ( identifier , (pointer_expression "*ppmVar42" * identifier) , identifier , identifier ))) ;) (expression_statement "pmVar29 = pmVar28;" (assignment_expression "pmVar29 = pmVar28" identifier = identifier) ;) (if_statement "if (*pmVar6 != 0) {\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }" if (parenthesized_expression "(*pmVar6 != 0)" ( (binary_expression "*pmVar6 != 0" (pointer_expression "*pmVar6" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }\n        }" { (do_statement "do {\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);" do (compound_statement "{\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            pmVar29 = pmVar29 + 1;\n          }" { (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) (if_statement "if (*pmVar6 == 0) {\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }\n          else {\n            *pmVar6 = 0;\n          }" if (parenthesized_expression "(*pmVar6 == 0)" ( (binary_expression "*pmVar6 == 0" (pointer_expression "*pmVar6" * identifier) == number_literal) )) (compound_statement "{\n            if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }\n            *pmVar6 = 1;\n          }" { (if_statement "if (B != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }" if (parenthesized_expression "(B != (uint *)0x0)" ( (binary_expression "B != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);\n            }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(pmVar28,0,(int)B * 4)" (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 "(pmVar28,0,(int)B * 4)" ( identifier , number_literal , (binary_expression "(int)B * 4" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) ;) })) (expression_statement "*pmVar6 = 1;" (assignment_expression "*pmVar6 = 1" (pointer_expression "*pmVar6" * identifier) = number_literal) ;) }) (else_clause "else {\n            *pmVar6 = 0;\n          }" else (compound_statement "{\n            *pmVar6 = 0;\n          }" { (expression_statement "*pmVar6 = 0;" (assignment_expression "*pmVar6 = 0" (pointer_expression "*pmVar6" * identifier) = number_literal) ;) }))) })) (expression_statement "ppmVar42 = ppmVar42 + 1;" (assignment_expression "ppmVar42 = ppmVar42 + 1" identifier = (binary_expression "ppmVar42 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 + l;" (assignment_expression "iVar7 = iVar7 + l" identifier = (binary_expression "iVar7 + l" identifier + identifier)) ;) (expression_statement "local_84 = (mp_ptr *)fft_l;" (assignment_expression "local_84 = (mp_ptr *)fft_l" identifier = (cast_expression "(mp_ptr *)fft_l" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(ppmVar17 != ppmVar42)" ( (binary_expression "ppmVar17 != ppmVar42" identifier != identifier) )) ;) })) (expression_statement "local_80 = K - 1;" (assignment_expression "local_80 = K - 1" identifier = (binary_expression "K - 1" identifier - number_literal)) ;) (if_statement "if (B != (uint *)0xffffffff) {\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }" if (parenthesized_expression "(B != (uint *)0xffffffff)" ( (binary_expression "B != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);\n    }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(fft_l,0,iVar36 * 4)" (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 "(fft_l,0,iVar36 * 4)" ( identifier , number_literal , (binary_expression "iVar36 * 4" identifier * number_literal) ))) ;) })) (expression_statement "iVar22 = local_80 * nprime;" (assignment_expression "iVar22 = local_80 * nprime" identifier = (binary_expression "local_80 * nprime" identifier * identifier)) ;) (expression_statement "iVar7 = pl * 2;" (assignment_expression "iVar7 = pl * 2" identifier = (binary_expression "pl * 2" identifier * number_literal)) ;) (expression_statement "puVar21 = (uint *)((int)B + iVar22);" (assignment_expression "puVar21 = (uint *)((int)B + iVar22)" identifier = (cast_expression "(uint *)((int)B + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)B + iVar22)" ( (binary_expression "(int)B + iVar22" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar37 = (int)puVar21 + 1;" (assignment_expression "iVar37 = (int)puVar21 + 1" identifier = (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (iVar37 == 0) {\n      puVar40 = (uint *)0xffffffff;\n    }\n    else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }" if (parenthesized_expression "(iVar37 == 0)" ( (binary_expression "iVar37 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar40 = (uint *)0xffffffff;\n    }" { (expression_statement "puVar40 = (uint *)0xffffffff;" (assignment_expression "puVar40 = (uint *)0xffffffff" identifier = (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }" else (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);\n      puVar40 = puVar21;\n    }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(A,0,iVar37 * 4)" (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 "(A,0,iVar37 * 4)" ( identifier , number_literal , (binary_expression "iVar37 * 4" identifier * number_literal) ))) ;) (expression_statement "puVar40 = puVar21;" (assignment_expression "puVar40 = puVar21" identifier = identifier) ;) }))) (if_statement "if (-1 < (int)local_80) {\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(-1 < (int)local_80)" ( (binary_expression "-1 < (int)local_80" number_literal < (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_7c = 0;\n      local_70 = (iVar22 + 1) - (int)puVar40;\n      pmVar28 = A + iVar22;\n      pmVar6 = A + iVar36 + iVar22 + 1;\n      pmVar29 = A + (int)puVar40;\n      local_84 = (mp_ptr *)fft_l + (int)B;\n      puVar40 = B;\n      uVar26 = local_80;\n      do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);\n      if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_70 = (iVar22 + 1) - (int)puVar40;" (assignment_expression "local_70 = (iVar22 + 1) - (int)puVar40" identifier = (binary_expression "(iVar22 + 1) - (int)puVar40" (parenthesized_expression "(iVar22 + 1)" ( (binary_expression "iVar22 + 1" identifier + number_literal) )) - (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar28 = A + iVar22;" (assignment_expression "pmVar28 = A + iVar22" identifier = (binary_expression "A + iVar22" identifier + identifier)) ;) (expression_statement "pmVar6 = A + iVar36 + iVar22 + 1;" (assignment_expression "pmVar6 = A + iVar36 + iVar22 + 1" identifier = (binary_expression "A + iVar36 + iVar22 + 1" (binary_expression "A + iVar36 + iVar22" (binary_expression "A + iVar36" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "pmVar29 = A + (int)puVar40;" (assignment_expression "pmVar29 = A + (int)puVar40" identifier = (binary_expression "A + (int)puVar40" identifier + (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_84 = (mp_ptr *)fft_l + (int)B;" (assignment_expression "local_84 = (mp_ptr *)fft_l + (int)B" identifier = (binary_expression "(mp_ptr *)fft_l + (int)B" (cast_expression "(mp_ptr *)fft_l" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar40 = B;" (assignment_expression "puVar40 = B" identifier = identifier) ;) (expression_statement "uVar26 = local_80;" (assignment_expression "uVar26 = local_80" identifier = identifier) ;) (do_statement "do {\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      } while (uVar26 != 0xffffffff);" do (compound_statement "{\n        iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);\n        if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n        pmVar18 = Bp[K - uVar26 & local_80];\n        ((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);\n        puVar19 = pmVar18 + (int)B;\n        iVar22 = iVar36;\n        ppmVar16 = local_84;\n        do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);\n        if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }\nLAB_00043030:\n        uVar26 = uVar26 - 1;\n        pmVar28 = pmVar28 + -nprime;\n        pmVar6 = pmVar6 + -nprime;\n        puVar40 = (uint *)((int)puVar40 + nprime);\n        pmVar29 = pmVar29 + -nprime;\n      }" { (expression_statement "iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                           (pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36)" (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 "(pmVar28,pmVar28,Bp[K - uVar26 & local_80],iVar36)" ( identifier , identifier , (subscript_expression "Bp[K - uVar26 & local_80]" identifier [ (binary_expression "K - uVar26 & local_80" (binary_expression "K - uVar26" identifier - identifier) & identifier) ]) , identifier )))) ;) (if_statement "if ((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)) {\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }" if (parenthesized_expression "((iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0))" ( (binary_expression "(iVar22 != 0) && (mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)" (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) && (parenthesized_expression "(mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0)" ( (comma_expression "mVar23 = pmVar6[-1], pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0" (assignment_expression "mVar23 = pmVar6[-1]" identifier = (subscript_expression "pmVar6[-1]" identifier [ number_literal ])) , (comma_expression "pmVar6[-1] = mVar23 + 1, mVar23 + 1 == 0" (assignment_expression "pmVar6[-1] = mVar23 + 1" (subscript_expression "pmVar6[-1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) , (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n          iVar22 = (int)puVar40 - (int)B;\n          if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }" { (expression_statement "iVar22 = (int)puVar40 - (int)B;" (assignment_expression "iVar22 = (int)puVar40 - (int)B" identifier = (binary_expression "(int)puVar40 - (int)B" (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar22 < 2) {\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }\n          else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(iVar22 < 2)" ( (binary_expression "iVar22 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00042fe4:\n            local_7c = local_7c + 1;\n          }" { (labeled_statement "LAB_00042fe4:\n            local_7c = local_7c + 1;" statement_identifier : (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" else (compound_statement "{\n            mVar23 = *pmVar6;\n            *pmVar6 = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" { (expression_statement "mVar23 = *pmVar6;" (assignment_expression "mVar23 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "*pmVar6 = mVar23 + 1;" (assignment_expression "*pmVar6 = mVar23 + 1" (pointer_expression "*pmVar6" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (iVar22 == 2) goto LAB_00042fe4;\n              mVar23 = pmVar6[1];\n              pmVar6[1] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }" { (if_statement "if (iVar22 == 2) goto LAB_00042fe4;" if (parenthesized_expression "(iVar22 == 2)" ( (binary_expression "iVar22 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar6[1];" (assignment_expression "mVar23 = pmVar6[1]" identifier = (subscript_expression "pmVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar6[1] = mVar23 + 1;" (assignment_expression "pmVar6[1] = mVar23 + 1" (subscript_expression "pmVar6[1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                iVar38 = 3;\n                pmVar18 = pmVar6 + 2;\n                do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);\n              }" { (expression_statement "iVar38 = 3;" (assignment_expression "iVar38 = 3" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar6 + 2;" (assignment_expression "pmVar18 = pmVar6 + 2" identifier = (binary_expression "pmVar6 + 2" identifier + number_literal)) ;) (do_statement "do {\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                } while (mVar23 + 1 == 0);" do (compound_statement "{\n                  if (iVar22 == iVar38) goto LAB_00042fe4;\n                  mVar23 = *pmVar18;\n                  iVar38 = iVar38 + 1;\n                  *pmVar18 = mVar23 + 1;\n                  pmVar18 = pmVar18 + 1;\n                }" { (if_statement "if (iVar22 == iVar38) goto LAB_00042fe4;" if (parenthesized_expression "(iVar22 == iVar38)" ( (binary_expression "iVar22 == iVar38" identifier == identifier) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar18;" (assignment_expression "mVar23 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar18 = mVar23 + 1;" (assignment_expression "*pmVar18 = mVar23 + 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) (expression_statement "pmVar18 = Bp[K - uVar26 & local_80];" (assignment_expression "pmVar18 = Bp[K - uVar26 & local_80]" identifier = (subscript_expression "Bp[K - uVar26 & local_80]" identifier [ (binary_expression "K - uVar26 & local_80" (binary_expression "K - uVar26" identifier - identifier) & identifier) ])) ;) (expression_statement "((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1);" (assignment_expression "((mp_ptr *)fft_l)[nprime * 2] = (mp_ptr)(uVar26 + 1)" (subscript_expression "((mp_ptr *)fft_l)[nprime * 2]" (parenthesized_expression "((mp_ptr *)fft_l)" ( (cast_expression "(mp_ptr *)fft_l" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ (binary_expression "nprime * 2" identifier * number_literal) ]) = (call_expression "(mp_ptr)(uVar26 + 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(uVar26 + 1)" ( (binary_expression "uVar26 + 1" identifier + number_literal) )))) ;) (expression_statement "puVar19 = pmVar18 + (int)B;" (assignment_expression "puVar19 = pmVar18 + (int)B" identifier = (binary_expression "pmVar18 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar22 = iVar36;" (assignment_expression "iVar22 = iVar36" identifier = identifier) ;) (expression_statement "ppmVar16 = local_84;" (assignment_expression "ppmVar16 = local_84" identifier = identifier) ;) (do_statement "do {\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -1;\n        } while (pmVar18 == pmVar34);" do (compound_statement "{\n          iVar22 = iVar22 + -1;\n          if (iVar22 < 0) goto LAB_00043030;\n          pmVar18 = (mp_ptr)*puVar19;\n          pmVar34 = *ppmVar16;\n          puVar19 = puVar19 + -1;\n          ppmVar16 = ppmVar16 + -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) goto LAB_00043030;" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00043030;" goto statement_identifier ;)) (expression_statement "pmVar18 = (mp_ptr)*puVar19;" (assignment_expression "pmVar18 = (mp_ptr)*puVar19" identifier = (binary_expression "(mp_ptr)*puVar19" (parenthesized_expression "(mp_ptr)" ( identifier )) * identifier)) ;) (expression_statement "pmVar34 = *ppmVar16;" (assignment_expression "pmVar34 = *ppmVar16" identifier = (pointer_expression "*ppmVar16" * identifier)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) (expression_statement "ppmVar16 = ppmVar16 + -1;" (assignment_expression "ppmVar16 = ppmVar16 + -1" identifier = (binary_expression "ppmVar16 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar18 == pmVar34)" ( (binary_expression "pmVar18 == pmVar34" identifier == identifier) )) ;) (if_statement "if (pmVar34 < pmVar18) {\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(pmVar34 < pmVar18)" ( (binary_expression "pmVar34 < pmVar18" identifier < identifier) )) (compound_statement "{\n          mVar23 = *pmVar28;\n          *pmVar28 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }\n        }" { (expression_statement "mVar23 = *pmVar28;" (assignment_expression "mVar23 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "*pmVar28 = mVar23 - 1;" (assignment_expression "*pmVar28 = mVar23 - 1" (pointer_expression "*pmVar28" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar22 = (int)puVar40 + 1;\n            if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }" { (expression_statement "iVar22 = (int)puVar40 + 1;" (assignment_expression "iVar22 = (int)puVar40 + 1" identifier = (binary_expression "(int)puVar40 + 1" (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (iVar22 < 2) {\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" if (parenthesized_expression "(iVar22 < 2)" ( (binary_expression "iVar22 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043990:\n              local_7c = local_7c + -1;\n            }" { (labeled_statement "LAB_00043990:\n              local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" else (compound_statement "{\n              mVar23 = pmVar28[1];\n              pmVar28[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" { (expression_statement "mVar23 = pmVar28[1];" (assignment_expression "mVar23 = pmVar28[1]" identifier = (subscript_expression "pmVar28[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar28[1] = mVar23 - 1;" (assignment_expression "pmVar28[1] = mVar23 - 1" (subscript_expression "pmVar28[1]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                if (iVar22 == 2) goto LAB_00043990;\n                mVar23 = pmVar28[2];\n                pmVar28[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }" { (if_statement "if (iVar22 == 2) goto LAB_00043990;" if (parenthesized_expression "(iVar22 == 2)" ( (binary_expression "iVar22 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar28[2];" (assignment_expression "mVar23 = pmVar28[2]" identifier = (subscript_expression "pmVar28[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar28[2] = mVar23 - 1;" (assignment_expression "pmVar28[2] = mVar23 - 1" (subscript_expression "pmVar28[2]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar38 = 3;\n                  pmVar18 = pmVar28 + 3;\n                  do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }" { (expression_statement "iVar38 = 3;" (assignment_expression "iVar38 = 3" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar28 + 3;" (assignment_expression "pmVar18 = pmVar28 + 3" identifier = (binary_expression "pmVar28 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);" do (compound_statement "{\n                    bVar1 = iVar22 == iVar38;\n                    iVar38 = iVar38 + 1;\n                    if (bVar1) goto LAB_00043990;\n                    mVar23 = *pmVar18;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  }" { (expression_statement "bVar1 = iVar22 == iVar38;" (assignment_expression "bVar1 = iVar22 == iVar38" identifier = (binary_expression "iVar22 == iVar38" identifier == identifier)) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043990;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar18;" (assignment_expression "mVar23 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "*pmVar18 = mVar23 - 1;" (assignment_expression "*pmVar18 = mVar23 - 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) })) })) }))) })) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar22 = local_70 + (int)puVar40;\n            if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }\n          }" { (expression_statement "iVar22 = local_70 + (int)puVar40;" (assignment_expression "iVar22 = local_70 + (int)puVar40" identifier = (binary_expression "local_70 + (int)puVar40" identifier + (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar22 < 2) {\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }\n            else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" if (parenthesized_expression "(iVar22 < 2)" ( (binary_expression "iVar22 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043a18:\n              local_7c = local_7c + -1;\n            }" { (labeled_statement "LAB_00043a18:\n              local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" else (compound_statement "{\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 - 1;\n              if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }\n            }" { (expression_statement "mVar23 = pmVar29[1];" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[1] = mVar23 - 1;" (assignment_expression "pmVar29[1] = mVar23 - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                if (iVar22 == 2) goto LAB_00043a18;\n                mVar23 = pmVar29[2];\n                pmVar29[2] = mVar23 - 1;\n                if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }\n              }" { (if_statement "if (iVar22 == 2) goto LAB_00043a18;" if (parenthesized_expression "(iVar22 == 2)" ( (binary_expression "iVar22 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar29[2];" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[2] = mVar23 - 1;" (assignment_expression "pmVar29[2] = mVar23 - 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar38 = 3;\n                  pmVar18 = pmVar29 + 3;\n                  do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);\n                }" { (expression_statement "iVar38 = 3;" (assignment_expression "iVar38 = 3" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar29 + 3;" (assignment_expression "pmVar18 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  } while (mVar23 == 0);" do (compound_statement "{\n                    if (iVar22 == iVar38) goto LAB_00043a18;\n                    mVar23 = *pmVar18;\n                    iVar38 = iVar38 + 1;\n                    *pmVar18 = mVar23 - 1;\n                    pmVar18 = pmVar18 + 1;\n                  }" { (if_statement "if (iVar22 == iVar38) goto LAB_00043a18;" if (parenthesized_expression "(iVar22 == iVar38)" ( (binary_expression "iVar22 == iVar38" identifier == identifier) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar18;" (assignment_expression "mVar23 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar18 = mVar23 - 1;" (assignment_expression "*pmVar18 = mVar23 - 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) })) })) }))) })) })) (labeled_statement "LAB_00043030:\n        uVar26 = uVar26 - 1;" statement_identifier : (expression_statement "uVar26 = uVar26 - 1;" (assignment_expression "uVar26 = uVar26 - 1" identifier = (binary_expression "uVar26 - 1" identifier - number_literal)) ;)) (expression_statement "pmVar28 = pmVar28 + -nprime;" (assignment_expression "pmVar28 = pmVar28 + -nprime" identifier = (binary_expression "pmVar28 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "pmVar6 = pmVar6 + -nprime;" (assignment_expression "pmVar6 = pmVar6 + -nprime" identifier = (binary_expression "pmVar6 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "puVar40 = (uint *)((int)puVar40 + nprime);" (assignment_expression "puVar40 = (uint *)((int)puVar40 + nprime)" identifier = (cast_expression "(uint *)((int)puVar40 + nprime)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar40 + nprime)" ( (binary_expression "(int)puVar40 + nprime" (cast_expression "(int)puVar40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pmVar29 = pmVar29 + -nprime;" (assignment_expression "pmVar29 = pmVar29 + -nprime" identifier = (binary_expression "pmVar29 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) }) while (parenthesized_expression "(uVar26 != 0xffffffff)" ( (binary_expression "uVar26 != 0xffffffff" identifier != number_literal) )) ;) (if_statement "if (local_7c == -1) {\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }\n      else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_7c == -1)" ( (binary_expression "local_7c == -1" identifier == number_literal) )) (compound_statement "{\n        iVar36 = iVar37 - pl;\n        pmVar29 = A + iVar36;\n        mVar23 = *pmVar29;\n        *pmVar29 = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }\n      }" { (expression_statement "iVar36 = iVar37 - pl;" (assignment_expression "iVar36 = iVar37 - pl" identifier = (binary_expression "iVar37 - pl" identifier - identifier)) ;) (expression_statement "pmVar29 = A + iVar36;" (assignment_expression "pmVar29 = A + iVar36" identifier = (binary_expression "A + iVar36" identifier + identifier)) ;) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 + 1;" (assignment_expression "*pmVar29 = mVar23 + 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }\n        }" { (if_statement "if (pl < 2) {\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }\n          else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(pl < 2)" ( (binary_expression "pl < 2" identifier < number_literal) )) (compound_statement "{\n            pmVar29 = A + iVar36 + -1;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }\nLAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;\n          }" { (expression_statement "pmVar29 = A + iVar36 + -1;" (assignment_expression "pmVar29 = A + iVar36 + -1" identifier = (binary_expression "A + iVar36 + -1" (binary_expression "A + iVar36" identifier + identifier) + number_literal)) ;) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if ((mVar23 == 0) && (pl == 1)) {\n              pmVar29[1] = pmVar29[1] - 1;\n            }" if (parenthesized_expression "((mVar23 == 0) && (pl == 1))" ( (binary_expression "(mVar23 == 0) && (pl == 1)" (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) && (parenthesized_expression "(pl == 1)" ( (binary_expression "pl == 1" identifier == number_literal) ))) )) (compound_statement "{\n              pmVar29[1] = pmVar29[1] - 1;\n            }" { (expression_statement "pmVar29[1] = pmVar29[1] - 1;" (assignment_expression "pmVar29[1] = pmVar29[1] - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "pmVar29[1] - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) - number_literal)) ;) })) (labeled_statement "LAB_00043f0c:\n            A[(int)puVar21] = A[(int)puVar21] - 1;" statement_identifier : (expression_statement "A[(int)puVar21] = A[(int)puVar21] - 1;" (assignment_expression "A[(int)puVar21] = A[(int)puVar21] - 1" (subscript_expression "A[(int)puVar21]" identifier [ (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "A[(int)puVar21] - 1" (subscript_expression "A[(int)puVar21]" identifier [ (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal)) ;)) }) (else_clause "else {\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" else (compound_statement "{\n            mVar23 = pmVar29[1];\n            pmVar29[1] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }\n          }" { (expression_statement "mVar23 = pmVar29[1];" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[1] = mVar23 + 1;" (assignment_expression "pmVar29[1] = mVar23 + 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }\n              mVar23 = pmVar29[2];\n              pmVar29[2] = mVar23 + 1;\n              if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }\n            }" { (if_statement "if (pl == 2) {\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }" if (parenthesized_expression "(pl == 2)" ( (binary_expression "pl == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 - 1;\n                if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }\n                goto LAB_00043f0c;\n              }" { (labeled_statement "LAB_00043ea4:\n                pmVar29 = A + iVar36 + -1;" statement_identifier : (expression_statement "pmVar29 = A + iVar36 + -1;" (assignment_expression "pmVar29 = A + iVar36 + -1" identifier = (binary_expression "A + iVar36 + -1" (binary_expression "A + iVar36" identifier + identifier) + number_literal)) ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)) {\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }" if (parenthesized_expression "(((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0))" ( (binary_expression "((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))\n                   && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)" (parenthesized_expression "((mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0))" ( (binary_expression "(mVar23 == 0) && (mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0)" (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) && (parenthesized_expression "(mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0)" ( (comma_expression "mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) , (comma_expression "pmVar29[1] = mVar23 - 1, mVar23 == 0" (assignment_expression "pmVar29[1] = mVar23 - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) , (binary_expression "mVar23 == 0" identifier == number_literal))) ))) )) && (parenthesized_expression "(mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)" ( (comma_expression "mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) , (comma_expression "pmVar29[2] = mVar23 - 1, mVar23 == 0" (assignment_expression "pmVar29[2] = mVar23 - 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) , (binary_expression "mVar23 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                  iVar36 = 3;\n                  pmVar29 = pmVar29 + 3;\n                  do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);\n                }" { (expression_statement "iVar36 = 3;" (assignment_expression "iVar36 = 3" identifier = number_literal) ;) (expression_statement "pmVar29 = pmVar29 + 3;" (assignment_expression "pmVar29 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  } while (mVar23 == 0);" do (compound_statement "{\n                    bVar1 = pl < iVar36;\n                    iVar36 = iVar36 + 1;\n                    if (bVar1) break;\n                    mVar23 = *pmVar29;\n                    *pmVar29 = mVar23 - 1;\n                    pmVar29 = pmVar29 + 1;\n                  }" { (expression_statement "bVar1 = pl < iVar36;" (assignment_expression "bVar1 = pl < iVar36" identifier = (binary_expression "pl < iVar36" identifier < identifier)) ;) (expression_statement "iVar36 = iVar36 + 1;" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_00043f0c;" goto statement_identifier ;) })) (expression_statement "mVar23 = pmVar29[2];" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[2] = mVar23 + 1;" (assignment_expression "pmVar29[2] = mVar23 + 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                iVar22 = 3;\n                pmVar29 = pmVar29 + 3;\n                do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);\n              }" { (expression_statement "iVar22 = 3;" (assignment_expression "iVar22 = 3" identifier = number_literal) ;) (expression_statement "pmVar29 = pmVar29 + 3;" (assignment_expression "pmVar29 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                } while (mVar23 + 1 == 0);" do (compound_statement "{\n                  if (pl == iVar22) goto LAB_00043ea4;\n                  mVar23 = *pmVar29;\n                  iVar22 = iVar22 + 1;\n                  *pmVar29 = mVar23 + 1;\n                  pmVar29 = pmVar29 + 1;\n                }" { (if_statement "if (pl == iVar22) goto LAB_00043ea4;" if (parenthesized_expression "(pl == iVar22)" ( (binary_expression "pl == iVar22" identifier == identifier) )) (goto_statement "goto LAB_00043ea4;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar29 = mVar23 + 1;" (assignment_expression "*pmVar29 = mVar23 + 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) }) (else_clause "else if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }" else (if_statement "if (local_7c == 1) {\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_7c == 1)" ( (binary_expression "local_7c == 1" identifier == number_literal) )) (compound_statement "{\n        if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }\n      }" { (if_statement "if (iVar37 < iVar7) {\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }\n        else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }" if (parenthesized_expression "(iVar37 < iVar7)" ( (binary_expression "iVar37 < iVar7" identifier < identifier) )) (compound_statement "{\n          pmVar29 = A + (iVar37 - pl);\n          mVar23 = *pmVar29;\n          *pmVar29 = mVar23 - 1;\n          if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }\n        }" { (expression_statement "pmVar29 = A + (iVar37 - pl);" (assignment_expression "pmVar29 = A + (iVar37 - pl)" identifier = (binary_expression "A + (iVar37 - pl)" identifier + (parenthesized_expression "(iVar37 - pl)" ( (binary_expression "iVar37 - pl" identifier - identifier) )))) ;) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))) {\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }" if (parenthesized_expression "(((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0))))))" ( (binary_expression "((mVar23 == 0) && (1 < pl)) &&\n             ((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))" (parenthesized_expression "((mVar23 == 0) && (1 < pl))" ( (binary_expression "(mVar23 == 0) && (1 < pl)" (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < pl)" ( (binary_expression "1 < pl" number_literal < identifier) ))) )) && (parenthesized_expression "((mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))))" ( (parenthesized_expression "(mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0))))" ( (comma_expression "mVar23 = pmVar29[1], pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) , (comma_expression "pmVar29[1] = mVar23 - 1, mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))" (assignment_expression "pmVar29[1] = mVar23 - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) , (binary_expression "mVar23 == 0 &&\n              ((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))" (binary_expression "mVar23 == 0" identifier == number_literal) && (parenthesized_expression "((pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)))" ( (parenthesized_expression "(pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0))" ( (binary_expression "pl != 2 && (mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)" (binary_expression "pl != 2" identifier != number_literal) && (parenthesized_expression "(mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0)" ( (comma_expression "mVar23 = pmVar29[2], pmVar29[2] = mVar23 - 1, mVar23 == 0" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) , (comma_expression "pmVar29[2] = mVar23 - 1, mVar23 == 0" (assignment_expression "pmVar29[2] = mVar23 - 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) , (binary_expression "mVar23 == 0" identifier == number_literal))) ))) )) ))))) )) ))) )) (compound_statement "{\n            iVar36 = 3;\n            pmVar29 = pmVar29 + 3;\n            do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);\n          }" { (expression_statement "iVar36 = 3;" (assignment_expression "iVar36 = 3" identifier = number_literal) ;) (expression_statement "pmVar29 = pmVar29 + 3;" (assignment_expression "pmVar29 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            } while (mVar23 == 0);" do (compound_statement "{\n              bVar1 = pl == iVar36;\n              iVar36 = iVar36 + 1;\n              if (bVar1) break;\n              mVar23 = *pmVar29;\n              *pmVar29 = mVar23 - 1;\n              pmVar29 = pmVar29 + 1;\n            }" { (expression_statement "bVar1 = pl == iVar36;" (assignment_expression "bVar1 = pl == iVar36" identifier = (binary_expression "pl == iVar36" identifier == identifier)) ;) (expression_statement "iVar36 = iVar36 + 1;" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }" else (compound_statement "{\n          pmVar29 = A + iVar37 + pl * -2;\n          while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }\n        }" { (expression_statement "pmVar29 = A + iVar37 + pl * -2;" (assignment_expression "pmVar29 = A + iVar37 + pl * -2" identifier = (binary_expression "A + iVar37 + pl * -2" (binary_expression "A + iVar37" identifier + identifier) + (binary_expression "pl * -2" identifier * number_literal))) ;) (while_statement "while( true ) {\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);\n            mVar23 = pmVar29[2];\n            pmVar29[2] = mVar23 + 1;\n            if (mVar23 + 1 != 0) break;\n            iVar36 = 3;\n            pmVar6 = pmVar29 + 3;\n            while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }\n          }" { (do_statement "do {\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            } while (iVar7 == 2);" do (compound_statement "{\n              mVar23 = *pmVar29;\n              do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);\n              mVar23 = pmVar29[1];\n              pmVar29[1] = mVar23 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }" { (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (do_statement "do {\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              } while (iVar7 < 2);" do (compound_statement "{\n                *pmVar29 = mVar23 + 1;\n                if (mVar23 + 1 != 0) goto LAB_00043068;\n                mVar23 = 0;\n              }" { (expression_statement "*pmVar29 = mVar23 + 1;" (assignment_expression "*pmVar29 = mVar23 + 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(mVar23 + 1 != 0)" ( (binary_expression "mVar23 + 1 != 0" (binary_expression "mVar23 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) (expression_statement "mVar23 = 0;" (assignment_expression "mVar23 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar7 < 2)" ( (binary_expression "iVar7 < 2" identifier < number_literal) )) ;) (expression_statement "mVar23 = pmVar29[1];" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[1] = mVar23 + 1;" (assignment_expression "pmVar29[1] = mVar23 + 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(mVar23 + 1 != 0)" ( (binary_expression "mVar23 + 1 != 0" (binary_expression "mVar23 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar7 == 2)" ( (binary_expression "iVar7 == 2" identifier == number_literal) )) ;) (expression_statement "mVar23 = pmVar29[2];" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[2] = mVar23 + 1;" (assignment_expression "pmVar29[2] = mVar23 + 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 != 0) break;" if (parenthesized_expression "(mVar23 + 1 != 0)" ( (binary_expression "mVar23 + 1 != 0" (binary_expression "mVar23 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar36 = 3;" (assignment_expression "iVar36 = 3" identifier = number_literal) ;) (expression_statement "pmVar6 = pmVar29 + 3;" (assignment_expression "pmVar6 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1) {\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }" while (parenthesized_expression "(bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1)" ( (comma_expression "bVar1 = iVar36 != iVar7, iVar36 = iVar36 + 1, bVar1" (assignment_expression "bVar1 = iVar36 != iVar7" identifier = (binary_expression "iVar36 != iVar7" identifier != identifier)) , (comma_expression "iVar36 = iVar36 + 1, bVar1" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n              mVar23 = *pmVar6;\n              *pmVar6 = mVar23 + 1;\n              pmVar6 = pmVar6 + 1;\n              if (mVar23 + 1 != 0) goto LAB_00043068;\n            }" { (expression_statement "mVar23 = *pmVar6;" (assignment_expression "mVar23 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "*pmVar6 = mVar23 + 1;" (assignment_expression "*pmVar6 = mVar23 + 1" (pointer_expression "*pmVar6" * identifier) = (binary_expression "mVar23 + 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 (mVar23 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(mVar23 + 1 != 0)" ( (binary_expression "mVar23 + 1 != 0" (binary_expression "mVar23 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) })) })) }))) })))) })) (labeled_statement "LAB_00043068:\n    iVar36 = iVar37 + pl * -2;" statement_identifier : (expression_statement "iVar36 = iVar37 + pl * -2;" (assignment_expression "iVar36 = iVar37 + pl * -2" identifier = (binary_expression "iVar37 + pl * -2" identifier + (binary_expression "pl * -2" identifier * number_literal))) ;)) (if_statement "if (iVar36 < 1) {\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }\n    else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }" if (parenthesized_expression "(iVar36 < 1)" ( (binary_expression "iVar36 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar36 = pl + iVar36;\n      iVar7 = iVar7 - iVar37;\n      if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }\n      B = (mp_ptr)(iVar36 * 4);\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);\n      pmVar29 = op + iVar36;\n      uVar30 = *pmVar29;\n      *pmVar29 = uVar30 - uVar26;\n      if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }\nLAB_00043a88:\n      fft_l = (int **)0x0;\n    }" { (expression_statement "iVar36 = pl + iVar36;" (assignment_expression "iVar36 = pl + iVar36" identifier = (binary_expression "pl + iVar36" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 - iVar37;" (assignment_expression "iVar7 = iVar7 - iVar37" identifier = (binary_expression "iVar7 - iVar37" identifier - identifier)) ;) (if_statement "if (pl != 0) {\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }" if (parenthesized_expression "(pl != 0)" ( (binary_expression "pl != 0" identifier != number_literal) )) (compound_statement "{\n        iVar37 = pl + -1;\n        mVar23 = *A;\n        pmVar29 = op;\n        pmVar24 = op;\n        pmVar3 = A;\n        if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }\n        *pmVar29 = mVar23;\n      }" { (expression_statement "iVar37 = pl + -1;" (assignment_expression "iVar37 = pl + -1" identifier = (binary_expression "pl + -1" identifier + number_literal)) ;) (expression_statement "mVar23 = *A;" (assignment_expression "mVar23 = *A" identifier = (pointer_expression "*A" * identifier)) ;) (expression_statement "pmVar29 = op;" (assignment_expression "pmVar29 = op" identifier = identifier) ;) (expression_statement "pmVar24 = op;" (assignment_expression "pmVar24 = op" identifier = identifier) ;) (expression_statement "pmVar3 = A;" (assignment_expression "pmVar3 = A" identifier = identifier) ;) (if_statement "if (iVar37 != 0) {\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }" if (parenthesized_expression "(iVar37 != 0)" ( (binary_expression "iVar37 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);\n          pmVar29 = op + pl + -1;\n        }" { (do_statement "do {\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          } while (iVar37 != 0);" do (compound_statement "{\n            *pmVar24 = mVar23;\n            iVar37 = iVar37 + -1;\n            mVar23 = pmVar3[1];\n            pmVar24 = pmVar24 + 1;\n            pmVar3 = pmVar3 + 1;\n          }" { (expression_statement "*pmVar24 = mVar23;" (assignment_expression "*pmVar24 = mVar23" (pointer_expression "*pmVar24" * identifier) = identifier) ;) (expression_statement "iVar37 = iVar37 + -1;" (assignment_expression "iVar37 = iVar37 + -1" identifier = (binary_expression "iVar37 + -1" identifier + number_literal)) ;) (expression_statement "mVar23 = pmVar3[1];" (assignment_expression "mVar23 = pmVar3[1]" identifier = (subscript_expression "pmVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar24 = pmVar24 + 1;" (assignment_expression "pmVar24 = pmVar24 + 1" identifier = (binary_expression "pmVar24 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar37 != 0)" ( (binary_expression "iVar37 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar29 = op + pl + -1;" (assignment_expression "pmVar29 = op + pl + -1" identifier = (binary_expression "op + pl + -1" (binary_expression "op + pl" identifier + identifier) + number_literal)) ;) })) (expression_statement "*pmVar29 = mVar23;" (assignment_expression "*pmVar29 = mVar23" (pointer_expression "*pmVar29" * identifier) = identifier) ;) })) (expression_statement "B = (mp_ptr)(iVar36 * 4);" (assignment_expression "B = (mp_ptr)(iVar36 * 4)" identifier = (call_expression "(mp_ptr)(iVar36 * 4)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(iVar36 * 4)" ( (binary_expression "iVar36 * 4" identifier * number_literal) )))) ;) (expression_statement "uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36);" (assignment_expression "uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,iVar36)" (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 "(op,op,A + pl,iVar36)" ( identifier , identifier , (binary_expression "A + pl" identifier + identifier) , identifier )))) ;) (expression_statement "pmVar29 = op + iVar36;" (assignment_expression "pmVar29 = op + iVar36" identifier = (binary_expression "op + iVar36" identifier + identifier)) ;) (expression_statement "uVar30 = *pmVar29;" (assignment_expression "uVar30 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = uVar30 - uVar26;" (assignment_expression "*pmVar29 = uVar30 - uVar26" (pointer_expression "*pmVar29" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar30 < uVar26) {\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }" if (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) (compound_statement "{\n        if (iVar7 < 2) goto LAB_00043184;\n        mVar23 = pmVar29[1];\n        pmVar29[1] = mVar23 - 1;\n        if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }\n      }" { (if_statement "if (iVar7 < 2) goto LAB_00043184;" if (parenthesized_expression "(iVar7 < 2)" ( (binary_expression "iVar7 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar29[1];" (assignment_expression "mVar23 = pmVar29[1]" identifier = (subscript_expression "pmVar29[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[1] = mVar23 - 1;" (assignment_expression "pmVar29[1] = mVar23 - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 == 0) {\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }" if (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar7 == 2) goto LAB_00043184;\n          mVar23 = pmVar29[2];\n          pmVar29[2] = mVar23 - 1;\n          if (mVar23 != 0) goto LAB_00043a88;\n          iVar36 = 3;\n          pmVar29 = pmVar29 + 3;\n          do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);\n          goto LAB_00043210;\n        }" { (if_statement "if (iVar7 == 2) goto LAB_00043184;" if (parenthesized_expression "(iVar7 == 2)" ( (binary_expression "iVar7 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "mVar23 = pmVar29[2];" (assignment_expression "mVar23 = pmVar29[2]" identifier = (subscript_expression "pmVar29[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar29[2] = mVar23 - 1;" (assignment_expression "pmVar29[2] = mVar23 - 1" (subscript_expression "pmVar29[2]" identifier [ number_literal ]) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (if_statement "if (mVar23 != 0) goto LAB_00043a88;" if (parenthesized_expression "(mVar23 != 0)" ( (binary_expression "mVar23 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;)) (expression_statement "iVar36 = 3;" (assignment_expression "iVar36 = 3" identifier = number_literal) ;) (expression_statement "pmVar29 = pmVar29 + 3;" (assignment_expression "pmVar29 = pmVar29 + 3" identifier = (binary_expression "pmVar29 + 3" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          } while (mVar23 == 0);" do (compound_statement "{\n            bVar1 = iVar7 == iVar36;\n            iVar36 = iVar36 + 1;\n            if (bVar1) goto LAB_00043184;\n            mVar23 = *pmVar29;\n            *pmVar29 = mVar23 - 1;\n            fft_l = (int **)0x0;\n            pmVar29 = pmVar29 + 1;\n          }" { (expression_statement "bVar1 = iVar7 == iVar36;" (assignment_expression "bVar1 = iVar7 == iVar36" identifier = (binary_expression "iVar7 == iVar36" identifier == identifier)) ;) (expression_statement "iVar36 = iVar36 + 1;" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043184;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 - 1;" (assignment_expression "*pmVar29 = mVar23 - 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 - 1" identifier - number_literal)) ;) (expression_statement "fft_l = (int **)0x0;" (assignment_expression "fft_l = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 == 0)" ( (binary_expression "mVar23 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00043a88:\n      fft_l = (int **)0x0;" statement_identifier : (expression_statement "fft_l = (int **)0x0;" (assignment_expression "fft_l = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) }) (else_clause "else {\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }" else (compound_statement "{\n      uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);\n      puVar40 = A + iVar36;\n      puVar21 = op + iVar36;\n      iVar36 = pl - iVar36;\n      uVar30 = *puVar40;\n      *puVar21 = uVar26 + uVar30;\n      if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }\n      B = op + pl;\n      uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);\n      uVar30 = *B;\n      *B = uVar30 - uVar26;\n      if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }\n    }" { (expression_statement "uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36);" (assignment_expression "uVar26 = (*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(op,A,A + pl * 2,iVar36)" (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 "(op,A,A + pl * 2,iVar36)" ( identifier , identifier , (binary_expression "A + pl * 2" identifier + (binary_expression "pl * 2" identifier * number_literal)) , identifier )))) ;) (expression_statement "puVar40 = A + iVar36;" (assignment_expression "puVar40 = A + iVar36" identifier = (binary_expression "A + iVar36" identifier + identifier)) ;) (expression_statement "puVar21 = op + iVar36;" (assignment_expression "puVar21 = op + iVar36" identifier = (binary_expression "op + iVar36" identifier + identifier)) ;) (expression_statement "iVar36 = pl - iVar36;" (assignment_expression "iVar36 = pl - iVar36" identifier = (binary_expression "pl - iVar36" identifier - identifier)) ;) (expression_statement "uVar30 = *puVar40;" (assignment_expression "uVar30 = *puVar40" identifier = (pointer_expression "*puVar40" * identifier)) ;) (expression_statement "*puVar21 = uVar26 + uVar30;" (assignment_expression "*puVar21 = uVar26 + uVar30" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar26 + uVar30" identifier + identifier)) ;) (if_statement "if (uVar26 + uVar30 < uVar26) {\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }\n      else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }" if (parenthesized_expression "(uVar26 + uVar30 < uVar26)" ( (binary_expression "uVar26 + uVar30 < uVar26" (binary_expression "uVar26 + uVar30" identifier + identifier) < identifier) )) (compound_statement "{\n        if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }\n      }" { (if_statement "if (iVar36 < 2) {\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }\n        else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }" if (parenthesized_expression "(iVar36 < 2)" ( (binary_expression "iVar36 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;\n        }" { (labeled_statement "LAB_00043b4c:\n          fft_l = (int **)&DAT_00000001;" statement_identifier : (expression_statement "fft_l = (int **)&DAT_00000001;" (assignment_expression "fft_l = (int **)&DAT_00000001" identifier = (cast_expression "(int **)&DAT_00000001" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00000001" & identifier))) ;)) }) (else_clause "else {\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }" else (compound_statement "{\n          uVar26 = puVar40[1];\n          puVar21[1] = uVar26 + 1;\n          if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }\n          if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;\n          puVar19 = puVar40 + iVar7;\n          puVar21 = puVar21 + iVar7;\n          do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);\n          fft_l = (int **)0x0;\n        }" { (expression_statement "uVar26 = puVar40[1];" (assignment_expression "uVar26 = puVar40[1]" identifier = (subscript_expression "puVar40[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar26 + 1;" (assignment_expression "puVar21[1] = uVar26 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }\n          else {\n            iVar7 = 2;\n          }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (iVar36 == 2) goto LAB_00043b4c;\n            uVar26 = puVar40[2];\n            puVar21[2] = uVar26 + 1;\n            if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }\n          }" { (if_statement "if (iVar36 == 2) goto LAB_00043b4c;" if (parenthesized_expression "(iVar36 == 2)" ( (binary_expression "iVar36 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar26 = puVar40[2];" (assignment_expression "uVar26 = puVar40[2]" identifier = (subscript_expression "puVar40[2]" identifier [ number_literal ])) ;) (expression_statement "puVar21[2] = uVar26 + 1;" (assignment_expression "puVar21[2] = uVar26 + 1" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 + 1 == 0) {\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }\n            else {\n              iVar7 = 3;\n            }" if (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar35 = puVar40 + 3;\n              iVar7 = 3;\n              puVar19 = puVar21 + 3;\n              do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);\n            }" { (expression_statement "puVar35 = puVar40 + 3;" (assignment_expression "puVar35 = puVar40 + 3" identifier = (binary_expression "puVar40 + 3" identifier + number_literal)) ;) (expression_statement "iVar7 = 3;" (assignment_expression "iVar7 = 3" identifier = number_literal) ;) (expression_statement "puVar19 = puVar21 + 3;" (assignment_expression "puVar19 = puVar21 + 3" identifier = (binary_expression "puVar21 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              } while (uVar26 + 1 == 0);" do (compound_statement "{\n                if (iVar36 == iVar7) goto LAB_00043b4c;\n                uVar26 = *puVar35;\n                iVar7 = iVar7 + 1;\n                puVar35 = puVar35 + 1;\n                *puVar19 = uVar26 + 1;\n                puVar19 = puVar19 + 1;\n              }" { (if_statement "if (iVar36 == iVar7) goto LAB_00043b4c;" if (parenthesized_expression "(iVar36 == iVar7)" ( (binary_expression "iVar36 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar35;" (assignment_expression "uVar26 = *puVar35" identifier = (pointer_expression "*puVar35" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar35 = puVar35 + 1;" (assignment_expression "puVar35 = puVar35 + 1" identifier = (binary_expression "puVar35 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 + 1 == 0)" ( (binary_expression "uVar26 + 1 == 0" (binary_expression "uVar26 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n              iVar7 = 3;\n            }" else (compound_statement "{\n              iVar7 = 3;\n            }" { (expression_statement "iVar7 = 3;" (assignment_expression "iVar7 = 3" identifier = number_literal) ;) }))) }) (else_clause "else {\n            iVar7 = 2;\n          }" else (compound_statement "{\n            iVar7 = 2;\n          }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar21 == puVar40) || (iVar36 <= iVar7)) goto LAB_00044504;" if (parenthesized_expression "((puVar21 == puVar40) || (iVar36 <= iVar7))" ( (binary_expression "(puVar21 == puVar40) || (iVar36 <= iVar7)" (parenthesized_expression "(puVar21 == puVar40)" ( (binary_expression "puVar21 == puVar40" identifier == identifier) )) || (parenthesized_expression "(iVar36 <= iVar7)" ( (binary_expression "iVar36 <= iVar7" identifier <= identifier) ))) )) (goto_statement "goto LAB_00044504;" goto statement_identifier ;)) (expression_statement "puVar19 = puVar40 + iVar7;" (assignment_expression "puVar19 = puVar40 + iVar7" identifier = (binary_expression "puVar40 + iVar7" identifier + identifier)) ;) (expression_statement "puVar21 = puVar21 + iVar7;" (assignment_expression "puVar21 = puVar21 + iVar7" identifier = (binary_expression "puVar21 + iVar7" identifier + identifier)) ;) (do_statement "do {\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          } while (puVar40 + iVar36 != puVar19);" do (compound_statement "{\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n            puVar21 = puVar21 + 1;\n          }" { (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar40 + iVar36 != puVar19)" ( (binary_expression "puVar40 + iVar36 != puVar19" (binary_expression "puVar40 + iVar36" identifier + identifier) != identifier) )) ;) (expression_statement "fft_l = (int **)0x0;" (assignment_expression "fft_l = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }))) }) (else_clause "else {\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }" else (compound_statement "{\n        if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }\nLAB_00044504:\n        fft_l = (int **)0x0;\n      }" { (if_statement "if ((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)) {\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }" if (parenthesized_expression "((puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36))" ( (binary_expression "(puVar21 != puVar40) && (puVar19 = puVar40 + 1, 1 < iVar36)" (parenthesized_expression "(puVar21 != puVar40)" ( (binary_expression "puVar21 != puVar40" identifier != identifier) )) && (parenthesized_expression "(puVar19 = puVar40 + 1, 1 < iVar36)" ( (comma_expression "puVar19 = puVar40 + 1, 1 < iVar36" (assignment_expression "puVar19 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) , (binary_expression "1 < iVar36" number_literal < identifier)) ))) )) (compound_statement "{\n          do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);\n        }" { (do_statement "do {\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          } while (puVar19 != puVar40 + iVar36);" do (compound_statement "{\n            puVar21 = puVar21 + 1;\n            uVar26 = *puVar19;\n            puVar19 = puVar19 + 1;\n            *puVar21 = uVar26;\n          }" { (expression_statement "puVar21 = puVar21 + 1;" (assignment_expression "puVar21 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "*puVar21 = uVar26;" (assignment_expression "*puVar21 = uVar26" (pointer_expression "*puVar21" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar19 != puVar40 + iVar36)" ( (binary_expression "puVar19 != puVar40 + iVar36" identifier != (binary_expression "puVar40 + iVar36" identifier + identifier)) )) ;) })) (labeled_statement "LAB_00044504:\n        fft_l = (int **)0x0;" statement_identifier : (expression_statement "fft_l = (int **)0x0;" (assignment_expression "fft_l = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) }))) (expression_statement "B = op + pl;" (assignment_expression "B = op + pl" identifier = (binary_expression "op + pl" identifier + identifier)) ;) (expression_statement "uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl);" (assignment_expression "uVar26 = (*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(op,op,A + pl,pl)" (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 "(op,op,A + pl,pl)" ( identifier , identifier , (binary_expression "A + pl" identifier + identifier) , identifier )))) ;) (expression_statement "uVar30 = *B;" (assignment_expression "uVar30 = *B" identifier = (pointer_expression "*B" * identifier)) ;) (expression_statement "*B = uVar30 - uVar26;" (assignment_expression "*B = uVar30 - uVar26" (pointer_expression "*B" * identifier) = (binary_expression "uVar30 - uVar26" identifier - identifier)) ;) (if_statement "if ((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)) {\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }" if (parenthesized_expression "((uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff))" ( (binary_expression "(uVar30 < uVar26) &&\n         (fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)" (parenthesized_expression "(uVar30 < uVar26)" ( (binary_expression "uVar30 < uVar26" identifier < identifier) )) && (parenthesized_expression "(fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff)" ( (comma_expression "fft_l = (int **)((int)fft_l + -1), (mp_ptr *)fft_l == (mp_ptr *)0xffffffff" (assignment_expression "fft_l = (int **)((int)fft_l + -1)" identifier = (cast_expression "(int **)((int)fft_l + -1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)fft_l + -1)" ( (binary_expression "(int)fft_l + -1" (cast_expression "(int)fft_l" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "(mp_ptr *)fft_l == (mp_ptr *)0xffffffff" (cast_expression "(mp_ptr *)fft_l" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(mp_ptr *)0xffffffff" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_00043184:\n        mVar23 = *op;\n        *op = mVar23 + 1;\n        if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }\n        goto LAB_00043a88;\n      }" { (labeled_statement "LAB_00043184:\n        mVar23 = *op;" statement_identifier : (expression_statement "mVar23 = *op;" (assignment_expression "mVar23 = *op" identifier = (pointer_expression "*op" * identifier)) ;)) (expression_statement "*op = mVar23 + 1;" (assignment_expression "*op = mVar23 + 1" (pointer_expression "*op" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }\n          mVar23 = op[1];\n          op[1] = mVar23 + 1;\n          if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if (pl < 2) {\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }" if (parenthesized_expression "(pl < 2)" ( (binary_expression "pl < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043204:\n            fft_l = (int **)&DAT_00000001;\n            goto LAB_00043210;\n          }" { (labeled_statement "LAB_00043204:\n            fft_l = (int **)&DAT_00000001;" statement_identifier : (expression_statement "fft_l = (int **)&DAT_00000001;" (assignment_expression "fft_l = (int **)&DAT_00000001" identifier = (cast_expression "(int **)&DAT_00000001" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00000001" & identifier))) ;)) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) (expression_statement "mVar23 = op[1];" (assignment_expression "mVar23 = op[1]" identifier = (subscript_expression "op[1]" identifier [ number_literal ])) ;) (expression_statement "op[1] = mVar23 + 1;" (assignment_expression "op[1] = mVar23 + 1" (subscript_expression "op[1]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (pl == 2) goto LAB_00043204;\n            mVar23 = op[2];\n            op[2] = mVar23 + 1;\n            if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }\n          }" { (if_statement "if (pl == 2) goto LAB_00043204;" if (parenthesized_expression "(pl == 2)" ( (binary_expression "pl == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "mVar23 = op[2];" (assignment_expression "mVar23 = op[2]" identifier = (subscript_expression "op[2]" identifier [ number_literal ])) ;) (expression_statement "op[2] = mVar23 + 1;" (assignment_expression "op[2] = mVar23 + 1" (subscript_expression "op[2]" identifier [ number_literal ]) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (if_statement "if (mVar23 + 1 == 0) {\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }" if (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              iVar36 = 3;\n              pmVar29 = op + 3;\n              do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);\n            }" { (expression_statement "iVar36 = 3;" (assignment_expression "iVar36 = 3" identifier = number_literal) ;) (expression_statement "pmVar29 = op + 3;" (assignment_expression "pmVar29 = op + 3" identifier = (binary_expression "op + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              } while (mVar23 + 1 == 0);" do (compound_statement "{\n                bVar1 = pl == iVar36;\n                iVar36 = iVar36 + 1;\n                if (bVar1) goto LAB_00043204;\n                mVar23 = *pmVar29;\n                *pmVar29 = mVar23 + 1;\n                pmVar29 = pmVar29 + 1;\n              }" { (expression_statement "bVar1 = pl == iVar36;" (assignment_expression "bVar1 = pl == iVar36" identifier = (binary_expression "pl == iVar36" identifier == identifier)) ;) (expression_statement "iVar36 = iVar36 + 1;" (assignment_expression "iVar36 = iVar36 + 1" identifier = (binary_expression "iVar36 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043204;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "mVar23 = *pmVar29;" (assignment_expression "mVar23 = *pmVar29" identifier = (pointer_expression "*pmVar29" * identifier)) ;) (expression_statement "*pmVar29 = mVar23 + 1;" (assignment_expression "*pmVar29 = mVar23 + 1" (pointer_expression "*pmVar29" * identifier) = (binary_expression "mVar23 + 1" identifier + number_literal)) ;) (expression_statement "pmVar29 = pmVar29 + 1;" (assignment_expression "pmVar29 = pmVar29 + 1" identifier = (binary_expression "pmVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar23 + 1 == 0)" ( (binary_expression "mVar23 + 1 == 0" (binary_expression "mVar23 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043210:\n    if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar5) {\n      return (mp_limb_t)fft_l;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar5)" ( (binary_expression "local_2c == *(int *)puVar5" identifier == (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return (mp_limb_t)fft_l;\n    }" { (return_statement "return (mp_limb_t)fft_l;" return (cast_expression "(mp_limb_t)fft_l" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier) ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (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_00045c00:\n    iVar36 = 0x230;" statement_identifier : (expression_statement "iVar36 = 0x230;" (assignment_expression "iVar36 = 0x230" identifier = number_literal) ;)) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppmVar16 = local_84;" (assignment_expression "ppmVar16 = local_84" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "uint * FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)\n\n{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}\n\n" (function_definition "uint * FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)\n\n{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" * (function_declarator "FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "uint *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "int param_12" primitive_type identifier) )))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int *piVar29;" primitive_type (pointer_declarator "*piVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int *piVar33;" primitive_type (pointer_declarator "*piVar33" * identifier) ;) (declaration "code *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "uint *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "code *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (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 "iVar23 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar23 = 1 << (param_3 & 0x1f)" identifier = (binary_expression "1 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "local_70 = param_9 * 2;" (assignment_expression "local_70 = param_9 * 2" identifier = (binary_expression "param_9 * 2" identifier * number_literal)) ;) (expression_statement "iVar20 = iVar23 >> 2;" (assignment_expression "iVar20 = iVar23 >> 2" identifier = (binary_expression "iVar23 >> 2" identifier >> number_literal)) ;) (expression_statement "local_84 = param_4;" (assignment_expression "local_84 = param_4" identifier = identifier) ;) (if_statement "if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = -4;\n    }" { (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" else (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" { (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31)" (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 "(puVar25,puVar25,param_4[1],iVar31)" ( identifier , identifier , (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" (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 "(param_4[1],param_11,param_4[1],iVar31)" ( (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042730;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_00042730;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00042730;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00044428;" goto statement_identifier ;) })) (labeled_statement "LAB_00042730:\n        uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00044428:\n        uVar27 = 1;\n      }" else (compound_statement "{\nLAB_00044428:\n        uVar27 = 1;\n      }" { (labeled_statement "LAB_00044428:\n        uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" { (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000427cc;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_000427cc;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000427cc;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_000444cc;" goto statement_identifier ;) })) (labeled_statement "LAB_000427cc:\n        iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" else (compound_statement "{\nLAB_000444cc:\n        iVar6 = 0;\n      }" { (labeled_statement "LAB_000444cc:\n        iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (param_12 != 0) goto LAB_000427e4;" if (parenthesized_expression "(param_12 != 0)" ( (binary_expression "param_12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" { (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31)" (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 "(puVar25,puVar25,param_5[1],iVar31)" ( identifier , identifier , (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" (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 "(param_5[1],param_11,param_5[1],iVar31)" ( (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[1]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }" { (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004461c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" { (if_statement "if (param_7 == puVar5) goto LAB_0004461c;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_0004461c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000446dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0004461c:\n        uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" else (compound_statement "{\nLAB_000446dc:\n        uVar27 = 1;\n      }" { (labeled_statement "LAB_000446dc:\n        uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 == 0) goto LAB_000446c4;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000446c4;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" { (labeled_statement "LAB_000446b8:\n        iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000446bc;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000446b8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (if_statement "if (param_7 == puVar5) goto LAB_000446b8;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000446b8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;" statement_identifier : (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" * (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;)) (goto_statement "goto LAB_000446c4;" goto statement_identifier ;) })) (expression_statement "local_68 = (int *)(param_10 + param_3 * 4);" (assignment_expression "local_68 = (int *)(param_10 + param_3 * 4)" identifier = (cast_expression "(int *)(param_10 + param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + param_3 * 4)" ( (binary_expression "param_10 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) ;) (expression_statement "local_7c = iVar23 >> 1;" (assignment_expression "local_7c = iVar23 >> 1" identifier = (binary_expression "iVar23 >> 1" identifier >> number_literal)) ;) (expression_statement "local_78 = param_9 * 4;" (assignment_expression "local_78 = param_9 * 4" identifier = (binary_expression "param_9 * 4" identifier * number_literal)) ;) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (if_statement "if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" if (parenthesized_expression "(local_7c == 2)" ( (binary_expression "local_7c == 2" identifier == number_literal) )) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = -4;\n    }" { (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" identifier = number_literal) ;) }) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" else (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" else (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" { (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }))) }))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31)" (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 "(puVar25,puVar25,param_4[2],iVar31)" ( identifier , identifier , (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" (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 "(param_4[2],param_11,param_4[2],iVar31)" ( (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" if (parenthesized_expression "(1 < *puVar17)" ( (binary_expression "1 < *puVar17" number_literal < (pointer_expression "*puVar17" * identifier)) )) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" identifier = (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" * identifier) - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" { (labeled_statement "LAB_0004355c:\n          *puVar17 = 0;" statement_identifier : (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043564;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004355c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            }" { (if_statement "if (param_7 == puVar5) goto LAB_0004355c;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_0004355c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" statement_identifier : (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" { (expression_statement "puVar25 = (uint *)param_4[2];" (assignment_expression "puVar25 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" { (labeled_statement "LAB_000435f8:\n          *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00043604;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000435f8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            }" { (if_statement "if (param_7 == puVar17) goto LAB_000435f8;" if (parenthesized_expression "(param_7 == puVar17)" ( (binary_expression "param_7 == puVar17" identifier == identifier) )) (goto_statement "goto LAB_000435f8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_00043604:\n    puVar17 = (uint *)param_4[1];" statement_identifier : (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" { (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31)" (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 "(puVar17,puVar17,param_4[3],iVar31)" ( identifier , identifier , (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" (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 "(param_4[3],param_11,param_4[3],iVar31)" ( (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = (uint *)((int)puVar17 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)puVar17 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar17 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar30)" ( (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" if (parenthesized_expression "(1 < *puVar5)" ( (binary_expression "1 < *puVar5" number_literal < (pointer_expression "*puVar5" * identifier)) )) (compound_statement "{\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" { (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "uVar27 = *puVar5 - 1;" (assignment_expression "uVar27 = *puVar5 - 1" identifier = (binary_expression "*puVar5 - 1" (pointer_expression "*puVar5" * identifier) - number_literal)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" { (labeled_statement "LAB_00043714:\n          *puVar5 = 0;" statement_identifier : (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004371c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043714;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00043714;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043714;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" statement_identifier : (if_statement "if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" { (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar17 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar17 + iVar30)" identifier = (cast_expression "(int *)((int)puVar17 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar30)" ( (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar6;" (assignment_expression "uVar27 = *puVar17 - iVar6" identifier = (binary_expression "*puVar17 - iVar6" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" { (labeled_statement "LAB_000437ac:\n          *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000437b8;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000437ac;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000437ac;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000437ac;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) }) (else_clause "else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" else (compound_statement "{\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" { (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = param_9 * 8;" (assignment_expression "iVar6 = param_9 * 8" identifier = (binary_expression "param_9 * 8" identifier * number_literal)) ;) (expression_statement "iVar30 = iVar23 >> 3;" (assignment_expression "iVar30 = iVar23 >> 3" identifier = (binary_expression "iVar23 >> 3" identifier >> number_literal)) ;) (if_statement "if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" if (parenthesized_expression "(iVar20 == 2)" ( (binary_expression "iVar20 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }" { (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (if_statement "if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" if (parenthesized_expression "(param_7 == (uint *)0xffffffff)" ( (binary_expression "param_7 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar31 = -4;\n      }" { (expression_statement "iVar31 = -4;" (assignment_expression "iVar31 = -4" identifier = number_literal) ;) }) (else_clause "else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" else (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar31 = 0;\n          puVar17 = param_11;\n        }" { (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" identifier = identifier) ;) }) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" else (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" { (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) }))) (expression_statement "iVar32 = (int)param_7 + 1;" (assignment_expression "iVar32 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32)" (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 "(puVar25,puVar25,param_4[4],iVar32)" ( identifier , identifier , (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" (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 "(param_4[4],param_11,param_4[4],iVar32)" ( (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[4]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" identifier = (cast_expression "(uint *)*param_4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000423fc;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_000423fc;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_000423fc;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459fc;" goto statement_identifier ;) })) (labeled_statement "LAB_000423fc:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_000459fc:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_000459fc:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" { (expression_statement "puVar25 = (uint *)param_4[4];" (assignment_expression "puVar25 = (uint *)param_4[4]" identifier = (cast_expression "(uint *)param_4[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[4]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = *(int *)((int)puVar25 + iVar31);" (assignment_expression "iVar21 = *(int *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar25 + iVar31)" * (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar27 = *puVar25 - iVar21;" (assignment_expression "uVar27 = *puVar25 - iVar21" identifier = (binary_expression "*puVar25 - iVar21" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar21)" ( (binary_expression "uVar27 < (uint)-iVar21" identifier < (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042498;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_00042498;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00042498;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a18;" goto statement_identifier ;) })) (labeled_statement "LAB_00042498:\n          iVar21 = 1;" statement_identifier : (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" else (compound_statement "{\nLAB_00045a18:\n          iVar21 = 0;\n        }" { (labeled_statement "LAB_00045a18:\n          iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) }))) (expression_statement "*(int *)((int)puVar25 + iVar31) = iVar21;" (assignment_expression "*(int *)((int)puVar25 + iVar31) = iVar21" (pointer_expression "*(int *)((int)puVar25 + iVar31)" * (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" { (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32)" (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 "(puVar17,puVar17,param_4[6],iVar32)" ( identifier , identifier , (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" (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 "(param_4[6],param_11,param_4[6],iVar32)" ( (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[6]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" identifier = (cast_expression "(uint *)param_4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000425b4;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000425b4;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000425b4;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000459f4;" goto statement_identifier ;) })) (labeled_statement "LAB_000425b4:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_000459f4:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_000459f4:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar17 = (uint *)param_4[6];" (assignment_expression "puVar17 = (uint *)param_4[6]" identifier = (cast_expression "(uint *)param_4[6]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" identifier = (cast_expression "(int *)((int)puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar21;" (assignment_expression "uVar27 = *puVar17 - iVar21" identifier = (binary_expression "*puVar17 - iVar21" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar21)" ( (binary_expression "uVar27 < (uint)-iVar21" identifier < (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" { (labeled_statement "LAB_0004264c:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004264c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0004264c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0004264c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000448f4:\n      iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);" do (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" { (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar28" identifier * (pointer_expression "*piVar28" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar12 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar12 = *(int *)(*puVar17 + iVar31)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar31)" * (cast_expression "(int *)(*puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar31)" ( (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar12 - (uVar27 + iVar32);" (assignment_expression "iVar11 = iVar12 - (uVar27 + iVar32)" identifier = (binary_expression "iVar12 - (uVar27 + iVar32)" identifier - (parenthesized_expression "(uVar27 + iVar32)" ( (binary_expression "uVar27 + iVar32" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;" (assignment_expression "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" identifier = (binary_expression "iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar32) - iVar12" (parenthesized_expression "(uVar27 + iVar32)" ( (binary_expression "uVar27 + iVar32" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" * (cast_expression "(uint *)((int)puVar5 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar11 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" { (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00044910;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044910;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" else (compound_statement "{\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" { (labeled_statement "LAB_00044910:\n          puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar32 = *(int *)((int)puVar5 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar32 + uVar27 + iVar11;" (assignment_expression "iVar11 = iVar32 + uVar27 + iVar11" identifier = (binary_expression "iVar32 + uVar27 + iVar11" (binary_expression "iVar32 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar11 - 1;" (assignment_expression "uVar27 = iVar11 - 1" identifier = (binary_expression "iVar11 - 1" identifier - number_literal)) ;) (if_statement "if (iVar11 == 0) {\n          uVar27 = 0;\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar27 = 0;\n        }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar11 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" { (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 < iVar20)" ( (binary_expression "iVar21 < iVar20" identifier < identifier) )) ;) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" if (parenthesized_expression "(iVar20 != 2)" ( (binary_expression "iVar20 != 2" identifier != number_literal) )) (compound_statement "{\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" { (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00044f40;" goto statement_identifier ;) })) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *param_11 = uVar27;\n        }" { (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" else (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" { (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(uint *)((int)param_11 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar31)" * (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar30 = (int)param_7 + 1;" (assignment_expression "iVar30 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30)" (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 "(puVar25,puVar25,param_4[5],iVar30)" ( identifier , identifier , (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" (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 "(param_4[5],param_11,param_4[5],iVar30)" ( (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[5]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" identifier = (cast_expression "(uint *)param_4[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044bb8;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" { (if_statement "if (param_7 == puVar5) goto LAB_00044bb8;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00044bb8;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00044e0c;" goto statement_identifier ;) })) (labeled_statement "LAB_00044bb8:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_00044e0c:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_00044e0c:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" * (cast_expression "(uint *)((int)puVar25 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar25 = (uint *)param_4[5];" (assignment_expression "puVar25 = (uint *)param_4[5]" identifier = (cast_expression "(uint *)param_4[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[5]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar25 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar25 + iVar31)" identifier = (cast_expression "(int *)((int)puVar25 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar31)" ( (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar24;" (assignment_expression "iVar6 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" { (labeled_statement "LAB_00044c54:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_00044c60;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044c54;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              }" { (if_statement "if (param_7 == puVar17) goto LAB_00044c54;" if (parenthesized_expression "(param_7 == puVar17)" ( (binary_expression "param_7 == puVar17" identifier == identifier) )) (goto_statement "goto LAB_00044c54;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_00044c60:\n      puVar17 = (uint *)param_4[3];" statement_identifier : (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" { (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" identifier = (cast_expression "(uint *)((int)param_11 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar31)" ( (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30)" (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 "(puVar17,puVar17,param_4[7],iVar30)" ( identifier , identifier , (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" (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 "(param_4[7],param_11,param_4[7],iVar30)" ( (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier , (subscript_expression "param_4[7]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" identifier = (cast_expression "(uint *)param_4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" identifier = (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" { (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - uVar26;" (assignment_expression "*puVar17 = uVar27 - uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" if (parenthesized_expression "(uVar27 < uVar26)" ( (binary_expression "uVar27 < uVar26" identifier < identifier) )) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }" { (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044d6c;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" do (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044d6c;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044d6c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a04;" goto statement_identifier ;) })) (labeled_statement "LAB_00044d6c:\n          uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" else (compound_statement "{\nLAB_00045a04:\n          uVar27 = 1;\n        }" { (labeled_statement "LAB_00045a04:\n          uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" * (cast_expression "(uint *)((int)puVar17 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" if (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" { (expression_statement "puVar17 = (uint *)param_4[7];" (assignment_expression "puVar17 = (uint *)param_4[7]" identifier = (cast_expression "(uint *)param_4[7]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" identifier = (cast_expression "(int *)((int)puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + iVar31)" ( (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar30 = *piVar24;" (assignment_expression "iVar30 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - iVar30;" (assignment_expression "uVar27 = *puVar17 - iVar30" identifier = (binary_expression "*puVar17 - iVar30" (pointer_expression "*puVar17" * identifier) - identifier)) ;) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar27 < (uint)-iVar30)" ( (binary_expression "uVar27 < (uint)-iVar30" identifier < (binary_expression "(uint)-iVar30" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" { (labeled_statement "LAB_00044e00:\n            *piVar24 = 1;" statement_identifier : (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044e00;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" do (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044e00;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044e00;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) })) (labeled_statement "LAB_0004533c:\n      puVar17 = param_4 + 1;" statement_identifier : (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;)) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);" do (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" { (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar28" identifier * (pointer_expression "*piVar28" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar31)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar31)" * (cast_expression "(int *)(*puVar17 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar31)" ( (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar6);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar6)" identifier = (binary_expression "iVar32 - (uVar27 + iVar6)" identifier - (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar6) - iVar32" (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" * (cast_expression "(uint *)((int)puVar5 + iVar31)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" { (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004534c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004534c;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" else (compound_statement "{\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" { (labeled_statement "LAB_0004534c:\n          puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar6 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar6 = *(int *)((int)puVar5 + iVar31)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar6 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar6 + uVar27 + iVar21" identifier = (binary_expression "iVar6 + uVar27 + iVar21" (binary_expression "iVar6 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n          uVar27 = 0;\n        }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar27 = 0;\n        }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" * (cast_expression "(int *)((int)puVar5 + iVar31)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar31)" ( (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" { (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 < iVar20)" ( (binary_expression "iVar30 < iVar20" identifier < identifier) )) ;) }) (else_clause "else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" else (compound_statement "{\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" { (expression_statement "piVar24 = local_68 + -3;" (assignment_expression "piVar24 = local_68 + -3" identifier = (binary_expression "local_68 + -3" identifier + number_literal)) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" identifier = (binary_expression "param_9 << 4" identifier << number_literal)) ;) (expression_statement "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" identifier (argument_list "(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_4 + 2;" (assignment_expression "puVar25 = param_4 + 2" identifier = (binary_expression "param_4 + 2" identifier + number_literal)) ;) (expression_statement "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 4" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }" { (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" else (compound_statement "{\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" { (expression_statement "piVar19 = piVar29 + iVar30 * 2;" (assignment_expression "piVar19 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar17[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" identifier = (cast_expression "(uint *)puVar17[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" identifier = (binary_expression "iVar11 - (uVar27 + iVar21)" identifier - (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" identifier = (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar32 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004333c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004333c;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_0004333c:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" identifier = (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" identifier = (binary_expression "puVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar19)" ( (binary_expression "piVar29 != piVar19" identifier != identifier) )) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 6" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar25[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" identifier = (cast_expression "(uint *)puVar25[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar21 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar21 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_0004478c;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004478c;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_0004478c:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar31 = uVar27 + uVar26 + iVar31;" (assignment_expression "iVar31 = uVar27 + uVar26 + iVar31" identifier = (binary_expression "uVar27 + uVar26 + iVar31" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar31 - 1;" (assignment_expression "uVar27 = iVar31 - 1" identifier = (binary_expression "iVar31 - 1" identifier - number_literal)) ;) (if_statement "if (iVar31 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar31 == 0)" ( (binary_expression "iVar31 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar31 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" identifier = (binary_expression "puVar25 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) }))) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" { (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000448f4;" goto statement_identifier ;) })) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_00044f40:\n      local_5c = local_68 + -3;" statement_identifier : (expression_statement "local_5c = local_68 + -3;" (assignment_expression "local_5c = local_68 + -3" identifier = (binary_expression "local_68 + -3" identifier + number_literal)) ;)) (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" identifier = (binary_expression "param_9 << 4" identifier << number_literal)) ;) (expression_statement "piVar24 = (int *)local_68[-2];" (assignment_expression "piVar24 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 5" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_4 + 3;" (assignment_expression "puVar25 = param_4 + 3" identifier = (binary_expression "param_4 + 3" identifier + number_literal)) ;) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }" { (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" else (compound_statement "{\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" { (expression_statement "piVar29 = piVar24 + iVar30 * 2;" (assignment_expression "piVar29 = piVar24 + iVar30 * 2" identifier = (binary_expression "piVar24 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar17[4],iVar6 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar17[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" identifier = (cast_expression "(uint *)puVar17[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" identifier = (binary_expression "iVar11 - (uVar27 + iVar21)" identifier - (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" identifier = (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" ( (binary_expression "uVar27 + iVar21" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar32 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00044fe8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00044fe8;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_00044fe8:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" identifier = (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" identifier = (binary_expression "puVar17 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" identifier = (cast_expression "(int *)local_68[-2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-2]" identifier [ number_literal ]))) ;) (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" ( (pointer_expression "*local_6c" * identifier) )) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" ( (binary_expression "param_4 + 7" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" identifier = (binary_expression "piVar29 + iVar30 * 2" identifier + (binary_expression "iVar30 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);" do (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" { (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" ( identifier , (subscript_expression "puVar25[4]" identifier [ number_literal ]) , (binary_expression "iVar6 * *piVar29" identifier * (pointer_expression "*piVar29" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" identifier = (cast_expression "(uint *)puVar25[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar30);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar30)" identifier = (binary_expression "iVar21 - (uVar27 + iVar30)" identifier - (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" identifier = (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" (binary_expression "iVar31 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar30) - iVar21" (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000451c8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000451c8;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_000451c8:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" identifier = (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" identifier = (binary_expression "iVar30 - 1" identifier - number_literal)) ;) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar30 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" identifier = (binary_expression "piVar29 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" identifier = (binary_expression "puVar25 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar29)" ( (binary_expression "piVar24 != piVar29" identifier != identifier) )) ;) }))) (if_statement "if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" { (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0004533c;" goto statement_identifier ;) })) }))) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" if (parenthesized_expression "(local_7c < 1)" ( (binary_expression "local_7c < 1" identifier < number_literal) )) (compound_statement "{\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" { (if_statement "if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" { (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (goto_statement "goto LAB_0004555c;" goto statement_identifier ;) })) (goto_statement "goto LAB_000427e4;" goto statement_identifier ;) })) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_000437b8:\n  iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" identifier = identifier) ;) (do_statement "do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);" do (compound_statement "{\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  }" { (expression_statement "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar17[1],local_70 * *piVar33,param_7)" ( identifier , (subscript_expression "puVar17[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar17[1];" (assignment_expression "puVar5 = (uint *)puVar17[1]" identifier = (cast_expression "(uint *)puVar17[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar30)" identifier = (pointer_expression "*(int *)(*puVar17 + iVar30)" * (cast_expression "(int *)(*puVar17 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + iVar30)" ( (binary_expression "*puVar17 + iVar30" (pointer_expression "*puVar17" * identifier) + identifier) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" * (cast_expression "(uint *)((int)puVar5 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }" { (do_statement "do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);" do (compound_statement "{\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000437d8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000437d8;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" else (compound_statement "{\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" { (labeled_statement "LAB_000437d8:\n      puVar5 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" identifier = (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n      uVar27 = 0;\n    }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar27 = 0;\n    }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" { (do_statement "do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);" do (compound_statement "{\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < local_7c)" ( (binary_expression "iVar6 < local_7c" identifier < identifier) )) ;) (if_statement "if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" if (parenthesized_expression "(param_12 != 0)" ( (binary_expression "param_12 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" { (labeled_statement "LAB_000427e4:\n    iVar30 = 0x230;" statement_identifier : (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" identifier = number_literal) ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000427f4;" goto statement_identifier ;) })) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" identifier = (cast_expression "(int *)*local_68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) ;) (if_statement "if (local_7c != 2) goto LAB_0004555c;" if (parenthesized_expression "(local_7c != 2)" ( (binary_expression "local_7c != 2" identifier != number_literal) )) (goto_statement "goto LAB_0004555c;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" identifier = identifier) ;) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" if (parenthesized_expression "(param_7 == (uint *)0x0)" ( (binary_expression "param_7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_11 = uVar27;\n    }" { (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" * identifier) = identifier) ;) }) (else_clause "else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" else (compound_statement "{\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" { (do_statement "do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" identifier = (cast_expression "(uint *)((int)puVar5 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(uint *)((int)param_11 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar30)" * (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }))) })) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31)" (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 "(puVar25,puVar25,param_5[2],iVar31)" ( identifier , identifier , (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" (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 "(param_5[2],param_11,param_5[2],iVar31)" ( (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" identifier = (cast_expression "(uint *)*param_5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_5" * identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" if (parenthesized_expression "(1 < *puVar17)" ( (binary_expression "1 < *puVar17" number_literal < (pointer_expression "*puVar17" * identifier)) )) (compound_statement "{\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" { (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" identifier = (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" * identifier) - number_literal)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" { (labeled_statement "LAB_00044098:\n        *puVar17 = 0;" statement_identifier : (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000440a0;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044098;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" { (if_statement "if (param_7 == puVar5) goto LAB_00044098;" if (parenthesized_expression "(param_7 == puVar5)" ( (binary_expression "param_7 == puVar5" identifier == identifier) )) (goto_statement "goto LAB_00044098;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) })) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) })) (labeled_statement "LAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" statement_identifier : (if_statement "if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" { (expression_statement "puVar25 = (uint *)param_5[2];" (assignment_expression "puVar25 = (uint *)param_5[2]" identifier = (cast_expression "(uint *)param_5[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" { (labeled_statement "LAB_00044130:\n        *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_0004413c;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044130;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" { (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);" do (compound_statement "{\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "bVar1 = param_7 == puVar17;" (assignment_expression "bVar1 = param_7 == puVar17" identifier = (binary_expression "param_7 == puVar17" identifier == identifier)) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" identifier = (cast_expression "(uint *)((int)puVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + 1)" ( (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044130;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044130;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) (labeled_statement "LAB_0004413c:\n  puVar25 = (uint *)param_5[1];" statement_identifier : (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;)) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" identifier = identifier) ;) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" identifier = identifier) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) (if_statement "if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" { (do_statement "do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);" do (compound_statement "{\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" identifier = (cast_expression "(uint *)((int)puVar18 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -1)" ( (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)0x0)" ( (binary_expression "puVar18 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "puVar17 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)param_11 + iVar30)" identifier = (cast_expression "(uint *)((int)param_11 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + iVar30)" ( (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31)" (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 "(puVar25,puVar25,param_5[3],iVar31)" ( identifier , identifier , (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" (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 "(param_5[3],param_11,param_5[3],iVar31)" ( (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier , (subscript_expression "param_5[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" identifier = (cast_expression "(uint *)param_5[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" identifier = (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" if (parenthesized_expression "(1 < uVar27)" ( (binary_expression "1 < uVar27" number_literal < identifier) )) (compound_statement "{\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - uVar26;" (assignment_expression "*puVar25 = uVar27 - uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (if_statement "if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" if (parenthesized_expression "(uVar27 < uVar26)" ( (binary_expression "uVar27 < uVar26" identifier < identifier) )) (compound_statement "{\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }" { (if_statement "if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" { (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044248;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" { (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            }" { (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" identifier = (binary_expression "param_7 == puVar18" identifier == identifier)) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" identifier = (cast_expression "(uint *)((int)puVar18 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + 1)" ( (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_00044248;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00044248;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_00045a50;" goto statement_identifier ;) })) (labeled_statement "LAB_00044248:\n      uVar27 = 0;" statement_identifier : (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" else (compound_statement "{\nLAB_00045a50:\n      uVar27 = 1;\n    }" { (labeled_statement "LAB_00045a50:\n      uVar27 = 1;" statement_identifier : (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;)) }))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" * (cast_expression "(uint *)((int)puVar25 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) })) (if_statement "if (iVar6 == 0) goto LAB_000442ec;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000442ec;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)param_5[3];" (assignment_expression "puVar25 = (uint *)param_5[3]" identifier = (cast_expression "(uint *)param_5[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" identifier = (cast_expression "(int *)((int)puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar30)" ( (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" identifier = (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" * identifier) - identifier)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (if_statement "if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" if (parenthesized_expression "(uVar27 < (uint)-iVar6)" ( (binary_expression "uVar27 < (uint)-iVar6" identifier < (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )) (compound_statement "{\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" { (if_statement "if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" if (parenthesized_expression "((int)param_7 < 2)" ( (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" { (labeled_statement "LAB_000442e0:\n      *piVar28 = 1;" statement_identifier : (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;)) (goto_statement "goto LAB_000442ec;" goto statement_identifier ;) })) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" { (if_statement "if (param_7 == (uint *)0x2) goto LAB_000442e0;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" { (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);" do (compound_statement "{\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        }" { (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" identifier = (binary_expression "param_7 == puVar5" identifier == identifier)) ;) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" identifier = (cast_expression "(uint *)((int)puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_000442e0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000442e0;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) (labeled_statement "LAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" do (compound_statement "{\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (do_statement "do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);" do (compound_statement "{\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    }" { (expression_statement "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" ( (pointer_expression "*local_90" * identifier) )) (argument_list "(param_11,puVar25[1],local_70 * *piVar33,param_7)" ( identifier , (subscript_expression "puVar25[1]" identifier [ number_literal ]) , (binary_expression "local_70 * *piVar33" identifier * (pointer_expression "*piVar33" * identifier)) , identifier ))) ;) (expression_statement "puVar5 = (uint *)puVar25[1];" (assignment_expression "puVar5 = (uint *)puVar25[1]" identifier = (cast_expression "(uint *)puVar25[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "iVar32 = *(int *)(*puVar25 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar25 + iVar30)" identifier = (pointer_expression "*(int *)(*puVar25 + iVar30)" * (cast_expression "(int *)(*puVar25 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + iVar30)" ( (binary_expression "*puVar25 + iVar30" (pointer_expression "*puVar25" * identifier) + identifier) ))))) ;) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,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 "(puVar5,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" identifier = (binary_expression "iVar32 - (uVar27 + iVar31)" identifier - (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" identifier = (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" ( (binary_expression "uVar27 + iVar31" identifier + identifier) )) - identifier))) ;) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" * (cast_expression "(uint *)((int)puVar5 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }" { (do_statement "do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);" do (compound_statement "{\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        }" { (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000442f4;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000442f4;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" else (compound_statement "{\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" { (labeled_statement "LAB_000442f4:\n        puVar5 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" identifier = (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" identifier = (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" identifier = (binary_expression "iVar21 - 1" identifier - number_literal)) ;) (if_statement "if (iVar21 == 0) {\n        uVar27 = 0;\n      }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar27 = 0;\n      }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" * (cast_expression "(int *)((int)puVar5 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + iVar30)" ( (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (binary_expression "iVar21 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" { (do_statement "do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);" do (compound_statement "{\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        }" { (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" identifier = (binary_expression "piVar33 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < local_7c)" ( (binary_expression "iVar6 < local_7c" identifier < identifier) )) ;) (labeled_statement "LAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" statement_identifier : (do_statement "do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" do (compound_statement "{\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (if_statement "if (local_84 == param_5) goto LAB_00045c00;" if (parenthesized_expression "(local_84 == param_5)" ( (binary_expression "local_84 == param_5" identifier == identifier) )) (goto_statement "goto LAB_00045c00;" goto statement_identifier ;)) (expression_statement "local_6c = (code *)0x0;" (assignment_expression "local_6c = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar30 = 0x270;" (assignment_expression "iVar30 = 0x270" identifier = number_literal) ;) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" identifier = identifier) ;) (labeled_statement "LAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" statement_identifier : (if_statement "if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" if (parenthesized_expression "((int)param_7 < iVar30)" ( (binary_expression "(int)param_7 < iVar30" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" { (expression_statement "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);" (assignment_expression "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" (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_30,(int)param_7 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(int)param_7 * 8" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (expression_statement "puVar17 = puVar25 + (int)param_7;" (assignment_expression "puVar17 = puVar25 + (int)param_7" identifier = (binary_expression "puVar25 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" if (parenthesized_expression "(0 < iVar23)" ( (binary_expression "0 < iVar23" number_literal < identifier) )) (compound_statement "{\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" { (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);" do (compound_statement "{\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          }" { (expression_statement "piVar33 = (int *)local_84[iVar30];" (assignment_expression "piVar33 = (int *)local_84[iVar30]" identifier = (cast_expression "(int *)local_84[iVar30]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_84[iVar30]" identifier [ identifier ]))) ;) (expression_statement "uVar27 = param_4[iVar30];" (assignment_expression "uVar27 = param_4[iVar30]" identifier = (subscript_expression "param_4[iVar30]" identifier [ identifier ])) ;) (if_statement "if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" if (parenthesized_expression "(local_84 == param_4)" ( (binary_expression "local_84 == param_4" identifier == identifier) )) (compound_statement "{\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }" { (expression_statement "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_0009d394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_0009d394" * (cast_expression "(code *)PTR___gmpn_sqr_0009d394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar25,piVar33,param_7)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" else (compound_statement "{\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" { (expression_statement "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_0009d364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_0009d364" * (cast_expression "(code *)PTR___gmpn_mul_n_0009d364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar25,uVar27,piVar33,param_7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "piVar24 = piVar33 + (int)param_7;" (assignment_expression "piVar24 = piVar33 + (int)param_7" identifier = (binary_expression "piVar33 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar28 = (int *)(uVar27 + (int)param_7 * 4);" (assignment_expression "piVar28 = (int *)(uVar27 + (int)param_7 * 4)" identifier = (cast_expression "(int *)(uVar27 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar27 + (int)param_7 * 4)" ( (binary_expression "uVar27 + (int)param_7 * 4" identifier + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (if_statement "if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" if (parenthesized_expression "(*piVar24 == 0)" ( (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" * identifier) == number_literal) )) (compound_statement "{\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" { (labeled_statement "LAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" statement_identifier : (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,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 "(puVar17,puVar17,piVar33,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "uVar27 = uVar27 + iVar6 + *piVar24;" (assignment_expression "uVar27 = uVar27 + iVar6 + *piVar24" identifier = (binary_expression "uVar27 + iVar6 + *piVar24" (binary_expression "uVar27 + iVar6" identifier + identifier) + (pointer_expression "*piVar24" * identifier))) ;) (goto_statement "goto LAB_00043d68;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" else (compound_statement "{\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" { (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,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 "(puVar17,puVar17,uVar27,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (*piVar28 != 0) goto LAB_00043d3c;" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (goto_statement "goto LAB_00043d3c;" goto statement_identifier ;)) (labeled_statement "LAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" statement_identifier : (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" if (parenthesized_expression "(((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0))" ( (binary_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" (parenthesized_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))))" ( (binary_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" (parenthesized_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1))" ( (binary_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)" (parenthesized_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27))" ( (binary_expression "(uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" ( (comma_expression "uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) , (comma_expression "*puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) , (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)param_7 << 1)" ( (binary_expression "1 < (int)param_7 << 1" number_literal < (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) )) && (parenthesized_expression "((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" ( (parenthesized_expression "(uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))" ( (comma_expression "uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) , (comma_expression "puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) , (binary_expression "uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) && (parenthesized_expression "((int)param_7 << 1 != 2)" ( (binary_expression "(int)param_7 << 1 != 2" (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != number_literal) ))))) )) ))) )) && (parenthesized_expression "(uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" ( (comma_expression "uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) , (comma_expression "puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) , (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" { (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);" do (compound_statement "{\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar25 + (int)param_7 * 2 == puVar5) break;" if (parenthesized_expression "(puVar25 + (int)param_7 * 2 == puVar5)" ( (binary_expression "puVar25 + (int)param_7 * 2 == puVar5" (binary_expression "puVar25 + (int)param_7 * 2" identifier + (binary_expression "(int)param_7 * 2" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);" (assignment_expression "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7)" identifier = (call_expression "(*pcVar14)(piVar33,puVar25,puVar17,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar33,puVar25,puVar17,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" if (parenthesized_expression "((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0))" ( (binary_expression "(iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" ( (comma_expression "iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) , (comma_expression "*piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) , (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_00043d00:\n              iVar6 = 0;\n            }" { (labeled_statement "LAB_00043d00:\n              iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" else (compound_statement "{\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" { (expression_statement "iVar6 = piVar33[1];" (assignment_expression "iVar6 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar6 + 1;" (assignment_expression "piVar33[1] = iVar6 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043ce4;" if (parenthesized_expression "(param_7 == (uint *)0x2)" ( (binary_expression "param_7 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar33[2];" (assignment_expression "iVar6 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar6 + 1;" (assignment_expression "piVar33[2] = iVar6 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" { (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);" do (compound_statement "{\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" { (if_statement "if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" if (parenthesized_expression "(piVar24 == piVar33)" ( (binary_expression "piVar24 == piVar33" identifier == identifier) )) (compound_statement "{\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00043ce4;" goto statement_identifier ;) })) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (goto_statement "goto LAB_00043d00;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043ce4:\n            *piVar24 = iVar6;" statement_identifier : (expression_statement "*piVar24 = iVar6;" (assignment_expression "*piVar24 = iVar6" (pointer_expression "*piVar24" * identifier) = identifier) ;)) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar23 != iVar30)" ( (binary_expression "iVar23 != iVar30" identifier != identifier) )) ;) })) (labeled_statement "LAB_00042c64:\n        iVar30 = (int)param_7 * 4;" statement_identifier : (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;)) (if_statement "if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 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 "()" ( ))) ;) })) (expression_statement "iVar6 = (int)param_7 + 1;" (assignment_expression "iVar6 = (int)param_7 + 1" identifier = (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_7c = iVar6 * 4;" (assignment_expression "local_7c = iVar6 * 4" identifier = (binary_expression "iVar6 * 4" identifier * number_literal)) ;) (expression_statement "puVar17 = param_11 + iVar6;" (assignment_expression "puVar17 = param_11 + iVar6" identifier = (binary_expression "param_11 + iVar6" identifier + identifier)) ;) (expression_statement "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);" (call_expression "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11)" identifier (argument_list "(local_84,iVar23,local_70,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_LAB_0009d078;" (assignment_expression "puVar3 = PTR_LAB_0009d078" identifier = identifier) ;) (expression_statement "puVar5 = puVar17 + (int)param_7;" (assignment_expression "puVar5 = puVar17 + (int)param_7" identifier = (binary_expression "puVar17 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*param_5 = (uint)puVar17;" (assignment_expression "*param_5 = (uint)puVar17" (pointer_expression "*param_5" * identifier) = (cast_expression "(uint)puVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" identifier (argument_list "(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" ( identifier , (pointer_expression "*local_84" * identifier) , (binary_expression "(int)param_7 * 0x40 - param_3" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , identifier ))) ;) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" identifier = identifier) ;) (if_statement "if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" if (parenthesized_expression "(*puVar5 != 0)" ( (binary_expression "*puVar5 != 0" (pointer_expression "*puVar5" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" { (do_statement "do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" do (compound_statement "{\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" { (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) (if_statement "if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }" if (parenthesized_expression "(*puVar5 == 0)" ( (binary_expression "*puVar5 == 0" (pointer_expression "*puVar5" * identifier) == number_literal) )) (compound_statement "{\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }" { (if_statement "if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30)" (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 "(puVar17,0,iVar30)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) }) (else_clause "else {\n            *puVar5 = 0;\n          }" else (compound_statement "{\n            *puVar5 = 0;\n          }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) }))) })) (if_statement "if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" if (parenthesized_expression "(1 < iVar23)" ( (binary_expression "1 < iVar23" number_literal < identifier) )) (compound_statement "{\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" { (expression_statement "puVar5 = local_84 + 1;" (assignment_expression "puVar5 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);" (assignment_expression "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" identifier = (binary_expression "(int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - (parenthesized_expression "((iVar23 + -1) * param_9 + param_3)" ( (binary_expression "(iVar23 + -1) * param_9 + param_3" (binary_expression "(iVar23 + -1) * param_9" (parenthesized_expression "(iVar23 + -1)" ( (binary_expression "iVar23 + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));" (assignment_expression "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" identifier = (cast_expression "(uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + (4 << (param_3 & 0x1f)))" ( (binary_expression "(int)local_84 + (4 << (param_3 & 0x1f))" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (param_3 & 0x1f))" ( (binary_expression "4 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (do_statement "do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);" do (compound_statement "{\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "piVar24 = (int *)puVar5[-1];" (assignment_expression "piVar24 = (int *)puVar5[-1]" identifier = (cast_expression "(int *)puVar5[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar25 = (uint)piVar24;" (assignment_expression "*puVar25 = (uint)piVar24" (pointer_expression "*puVar25" * identifier) = (cast_expression "(uint)piVar24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "piVar28 = piVar24 + (int)param_7;" (assignment_expression "piVar28 = piVar24 + (int)param_7" identifier = (binary_expression "piVar24 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);" (call_expression "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7)" (parenthesized_expression "(*(code *)(puVar3 + 0x790))" ( (pointer_expression "*(code *)(puVar3 + 0x790)" * (cast_expression "(code *)(puVar3 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x790)" ( (binary_expression "puVar3 + 0x790" identifier + number_literal) )))) )) (argument_list "(piVar24,*puVar5,iVar31,param_7)" ( identifier , (pointer_expression "*puVar5" * identifier) , identifier , identifier ))) ;) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" identifier = identifier) ;) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" { (do_statement "do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);" do (compound_statement "{\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" if (parenthesized_expression "(*piVar28 == 0)" ( (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" * identifier) == number_literal) )) (compound_statement "{\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }" { (if_statement "if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" if (parenthesized_expression "(param_7 != (uint *)0x0)" ( (binary_expression "param_7 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30)" (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 "(piVar24,0,iVar30)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar28 = 0;\n              }" else (compound_statement "{\n                *piVar28 = 0;\n              }" { (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) })) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = iVar31 + param_9;" (assignment_expression "iVar31 = iVar31 + param_9" identifier = (binary_expression "iVar31 + param_9" identifier + identifier)) ;) (expression_statement "local_84 = param_11;" (assignment_expression "local_84 = param_11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar5)" ( (binary_expression "puVar17 != puVar5" identifier != identifier) )) ;) })) (expression_statement "local_80 = iVar23 - 1;" (assignment_expression "local_80 = iVar23 - 1" identifier = (binary_expression "iVar23 - 1" identifier - number_literal)) ;) (if_statement "if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" if (parenthesized_expression "(param_7 != (uint *)0xffffffff)" ( (binary_expression "param_7 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4)" (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 "(param_11,0,iVar6 * 4)" ( identifier , number_literal , (binary_expression "iVar6 * 4" identifier * number_literal) ))) ;) })) (expression_statement "iVar21 = local_80 * param_8;" (assignment_expression "iVar21 = local_80 * param_8" identifier = (binary_expression "local_80 * param_8" identifier * identifier)) ;) (expression_statement "iVar31 = param_2 * 2;" (assignment_expression "iVar31 = param_2 * 2" identifier = (binary_expression "param_2 * 2" identifier * number_literal)) ;) (expression_statement "puVar25 = (uint *)((int)param_7 + iVar21);" (assignment_expression "puVar25 = (uint *)((int)param_7 + iVar21)" identifier = (cast_expression "(uint *)((int)param_7 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_7 + iVar21)" ( (binary_expression "(int)param_7 + iVar21" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_78 = (int)puVar25 + 1;" (assignment_expression "local_78 = (int)puVar25 + 1" identifier = (binary_expression "(int)puVar25 + 1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" if (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar17 = (uint *)0xffffffff;\n        }" { (expression_statement "puVar17 = (uint *)0xffffffff;" (assignment_expression "puVar17 = (uint *)0xffffffff" identifier = (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" else (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4)" (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 "(param_6,0,local_78 * 4)" ( identifier , number_literal , (binary_expression "local_78 * 4" identifier * number_literal) ))) ;) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" identifier = identifier) ;) }))) (if_statement "if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(-1 < (int)local_80)" ( (binary_expression "-1 < (int)local_80" number_literal < (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_70 = (iVar21 + 1) - (int)puVar17;" (assignment_expression "local_70 = (iVar21 + 1) - (int)puVar17" identifier = (binary_expression "(iVar21 + 1) - (int)puVar17" (parenthesized_expression "(iVar21 + 1)" ( (binary_expression "iVar21 + 1" identifier + number_literal) )) - (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar24 = param_6 + iVar21;" (assignment_expression "piVar24 = param_6 + iVar21" identifier = (binary_expression "param_6 + iVar21" identifier + identifier)) ;) (expression_statement "piVar28 = param_6 + iVar6 + iVar21 + 1;" (assignment_expression "piVar28 = param_6 + iVar6 + iVar21 + 1" identifier = (binary_expression "param_6 + iVar6 + iVar21 + 1" (binary_expression "param_6 + iVar6 + iVar21" (binary_expression "param_6 + iVar6" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "piVar33 = param_6 + (int)puVar17;" (assignment_expression "piVar33 = param_6 + (int)puVar17" identifier = (binary_expression "param_6 + (int)puVar17" identifier + (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_84 = param_11 + (int)param_7;" (assignment_expression "local_84 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar17 = param_7;" (assignment_expression "puVar17 = param_7" identifier = identifier) ;) (expression_statement "uVar27 = local_80;" (assignment_expression "uVar27 = local_80" identifier = identifier) ;) (do_statement "do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);" do (compound_statement "{\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          }" { (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" (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 "(piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" ( identifier , identifier , (subscript_expression "param_5[iVar23 - uVar27 & local_80]" identifier [ (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" identifier - identifier) & identifier) ]) , identifier )))) ;) (if_statement "if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))" ( (binary_expression "(iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" ( (comma_expression "iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "iVar21 = piVar28[-1]" identifier = (subscript_expression "piVar28[-1]" identifier [ number_literal ])) , (comma_expression "piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "piVar28[-1] = iVar21 + 1" (subscript_expression "piVar28[-1]" identifier [ number_literal ]) = (binary_expression "iVar21 + 1" identifier + number_literal)) , (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" { (expression_statement "iVar21 = (int)puVar17 - (int)param_7;" (assignment_expression "iVar21 = (int)puVar17 - (int)param_7" identifier = (binary_expression "(int)puVar17 - (int)param_7" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }" { (labeled_statement "LAB_00042fe4:\n                local_7c = local_7c + 1;" statement_identifier : (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" identifier = (binary_expression "local_7c + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" else (compound_statement "{\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" { (expression_statement "iVar32 = *piVar28;" (assignment_expression "iVar32 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "*piVar28 = iVar32 + 1;" (assignment_expression "*piVar28 = iVar32 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar32 + 1 == 0)" ( (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" { (if_statement "if (iVar21 == 2) goto LAB_00042fe4;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar28[1];" (assignment_expression "iVar32 = piVar28[1]" identifier = (subscript_expression "piVar28[1]" identifier [ number_literal ])) ;) (expression_statement "piVar28[1] = iVar32 + 1;" (assignment_expression "piVar28[1] = iVar32 + 1" (subscript_expression "piVar28[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar32 + 1 == 0)" ( (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar28 + 2;" (assignment_expression "piVar29 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (do_statement "do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);" do (compound_statement "{\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    }" { (if_statement "if (iVar21 == iVar32) goto LAB_00042fe4;" if (parenthesized_expression "(iVar21 == iVar32)" ( (binary_expression "iVar21 == iVar32" identifier == identifier) )) (goto_statement "goto LAB_00042fe4;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "*piVar29 = iVar11 + 1;" (assignment_expression "*piVar29 = iVar11 + 1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 + 1 == 0)" ( (binary_expression "iVar11 + 1 == 0" (binary_expression "iVar11 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) (expression_statement "uVar26 = param_5[iVar23 - uVar27 & local_80];" (assignment_expression "uVar26 = param_5[iVar23 - uVar27 & local_80]" identifier = (subscript_expression "param_5[iVar23 - uVar27 & local_80]" identifier [ (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" identifier - identifier) & identifier) ])) ;) (expression_statement "param_11[param_8 * 2] = uVar27 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar27 + 1" (subscript_expression "param_11[param_8 * 2]" identifier [ (binary_expression "param_8 * 2" identifier * number_literal) ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)(uVar26 + iVar30);" (assignment_expression "puVar18 = (uint *)(uVar26 + iVar30)" identifier = (cast_expression "(uint *)(uVar26 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar26 + iVar30)" ( (binary_expression "uVar26 + iVar30" identifier + identifier) )))) ;) (expression_statement "iVar21 = iVar6;" (assignment_expression "iVar21 = iVar6" identifier = identifier) ;) (expression_statement "puVar5 = local_84;" (assignment_expression "puVar5 = local_84" identifier = identifier) ;) (do_statement "do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);" do (compound_statement "{\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            }" { (expression_statement "iVar21 = iVar21 + -1;" (assignment_expression "iVar21 = iVar21 + -1" identifier = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 < 0) goto LAB_00043030;" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00043030;" goto statement_identifier ;)) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uVar7 = *puVar5;" (assignment_expression "uVar7 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 == uVar7)" ( (binary_expression "uVar26 == uVar7" identifier == identifier) )) ;) (if_statement "if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(uVar7 < uVar26)" ( (binary_expression "uVar7 < uVar26" identifier < identifier) )) (compound_statement "{\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" { (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "*piVar24 = iVar21 + -1;" (assignment_expression "*piVar24 = iVar21 + -1" (pointer_expression "*piVar24" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" { (expression_statement "iVar21 = (int)puVar17 + 1;" (assignment_expression "iVar21 = (int)puVar17 + 1" identifier = (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }" { (labeled_statement "LAB_00043990:\n                  local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" else (compound_statement "{\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" { (expression_statement "iVar32 = piVar24[1];" (assignment_expression "iVar32 = piVar24[1]" identifier = (subscript_expression "piVar24[1]" identifier [ number_literal ])) ;) (expression_statement "piVar24[1] = iVar32 + -1;" (assignment_expression "piVar24[1] = iVar32 + -1" (subscript_expression "piVar24[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" { (if_statement "if (iVar21 == 2) goto LAB_00043990;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar24[2];" (assignment_expression "iVar32 = piVar24[2]" identifier = (subscript_expression "piVar24[2]" identifier [ number_literal ])) ;) (expression_statement "piVar24[2] = iVar32 + -1;" (assignment_expression "piVar24[2] = iVar32 + -1" (subscript_expression "piVar24[2]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar24 + 3;" (assignment_expression "piVar29 = piVar24 + 3" identifier = (binary_expression "piVar24 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" do (compound_statement "{\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" { (expression_statement "bVar1 = iVar21 == iVar32;" (assignment_expression "bVar1 = iVar21 == iVar32" identifier = (binary_expression "iVar21 == iVar32" identifier == identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043990;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043990;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) })) }))) })) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (if_statement "if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" { (expression_statement "iVar21 = local_70 + (int)puVar17;" (assignment_expression "iVar21 = local_70 + (int)puVar17" identifier = (binary_expression "local_70 + (int)puVar17" identifier + (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar21 < 2)" ( (binary_expression "iVar21 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }" { (labeled_statement "LAB_00043a18:\n                  local_7c = local_7c + -1;" statement_identifier : (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" identifier = (binary_expression "local_7c + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" else (compound_statement "{\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" { (expression_statement "iVar32 = piVar33[1];" (assignment_expression "iVar32 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar32 + -1;" (assignment_expression "piVar33[1] = iVar32 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" { (if_statement "if (iVar21 == 2) goto LAB_00043a18;" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "iVar32 = piVar33[2];" (assignment_expression "iVar32 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar32 + -1;" (assignment_expression "piVar33[2] = iVar32 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar32 + -1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" if (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) (expression_statement "piVar29 = piVar33 + 3;" (assignment_expression "piVar29 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" do (compound_statement "{\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" { (if_statement "if (iVar21 == iVar32) goto LAB_00043a18;" if (parenthesized_expression "(iVar21 == iVar32)" ( (binary_expression "iVar21 == iVar32" identifier == identifier) )) (goto_statement "goto LAB_00043a18;" goto statement_identifier ;)) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" identifier = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" * identifier) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" identifier = (binary_expression "piVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) })) }))) })) })) (labeled_statement "LAB_00043030:\n            uVar27 = uVar27 - 1;" statement_identifier : (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ;)) (expression_statement "piVar24 = piVar24 + -param_8;" (assignment_expression "piVar24 = piVar24 + -param_8" identifier = (binary_expression "piVar24 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar28 = piVar28 + -param_8;" (assignment_expression "piVar28 = piVar28 + -param_8" identifier = (binary_expression "piVar28 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "puVar17 = (uint *)((int)puVar17 + param_8);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + param_8)" identifier = (cast_expression "(uint *)((int)puVar17 + param_8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + param_8)" ( (binary_expression "(int)puVar17 + param_8" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar33 = piVar33 + -param_8;" (assignment_expression "piVar33 = piVar33 + -param_8" identifier = (binary_expression "piVar33 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) }) while (parenthesized_expression "(uVar27 != 0xffffffff)" ( (binary_expression "uVar27 != 0xffffffff" identifier != number_literal) )) ;) (if_statement "if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_7c == -1)" ( (binary_expression "local_7c == -1" identifier == number_literal) )) (compound_statement "{\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }" { (expression_statement "iVar6 = local_78 - param_2;" (assignment_expression "iVar6 = local_78 - param_2" identifier = (binary_expression "local_78 - param_2" identifier - identifier)) ;) (expression_statement "piVar33 = param_6 + iVar6;" (assignment_expression "piVar33 = param_6 + iVar6" identifier = (binary_expression "param_6 + iVar6" identifier + identifier)) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" { (if_statement "if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }" { (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" identifier = (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" identifier + identifier) + number_literal)) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }" if (parenthesized_expression "((iVar30 == 0) && (param_2 == 1))" ( (binary_expression "(iVar30 == 0) && (param_2 == 1)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) ))) )) (compound_statement "{\n                  piVar33[1] = piVar33[1] + -1;\n                }" { (expression_statement "piVar33[1] = piVar33[1] + -1;" (assignment_expression "piVar33[1] = piVar33[1] + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "piVar33[1] + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) + number_literal)) ;) })) (labeled_statement "LAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" statement_identifier : (expression_statement "param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" (assignment_expression "param_6[(int)puVar25] = param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" identifier [ (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" identifier [ (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]) + number_literal)) ;)) }) (else_clause "else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" else (compound_statement "{\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" { (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" { (if_statement "if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" { (labeled_statement "LAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;" statement_identifier : (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" identifier = (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" identifier + identifier) + number_literal)) ;)) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" if (parenthesized_expression "(((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "(iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) , (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) && (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) , (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);" do (compound_statement "{\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      }" { (expression_statement "bVar1 = param_2 < iVar30;" (assignment_expression "bVar1 = param_2 < iVar30" identifier = (binary_expression "param_2 < iVar30" identifier < identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_00043f0c;" goto statement_identifier ;) })) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);" do (compound_statement "{\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" { (if_statement "if (param_2 == iVar30) goto LAB_00043ea4;" if (parenthesized_expression "(param_2 == iVar30)" ( (binary_expression "param_2 == iVar30" identifier == identifier) )) (goto_statement "goto LAB_00043ea4;" goto statement_identifier ;)) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "*piVar33 = iVar21 + 1;" (assignment_expression "*piVar33 = iVar21 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 + 1 == 0)" ( (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }))) })) }) (else_clause "else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" else (if_statement "if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_7c == 1)" ( (binary_expression "local_7c == 1" identifier == number_literal) )) (compound_statement "{\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" { (if_statement "if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" if (parenthesized_expression "(local_78 < iVar31)" ( (binary_expression "local_78 < iVar31" identifier < identifier) )) (compound_statement "{\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }" { (expression_statement "piVar33 = param_6 + (local_78 - param_2);" (assignment_expression "piVar33 = param_6 + (local_78 - param_2)" identifier = (binary_expression "param_6 + (local_78 - param_2)" identifier + (parenthesized_expression "(local_78 - param_2)" ( (binary_expression "local_78 - param_2" identifier - identifier) )))) ;) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" if (parenthesized_expression "(((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 )" ( (binary_expression "((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" (parenthesized_expression "((iVar30 == 0) && (1 < param_2))" ( (binary_expression "(iVar30 == 0) && (1 < param_2)" (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) ))) )) && (parenthesized_expression "((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" ( (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))))" ( (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) , (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (binary_expression "iVar30 == 0" identifier == number_literal) && (parenthesized_expression "((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" ( (parenthesized_expression "(param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" ( (binary_expression "param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (binary_expression "param_2 != 2" identifier != number_literal) && (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" ( (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) , (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + -1" identifier + number_literal)) , (binary_expression "iVar30 == 0" identifier == number_literal))) ))) )) ))))) )) ))) )) (compound_statement "{\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);" do (compound_statement "{\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                }" { (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" identifier = (binary_expression "param_2 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" else (compound_statement "{\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" { (expression_statement "piVar33 = param_6 + local_78 + param_2 * -2;" (assignment_expression "piVar33 = param_6 + local_78 + param_2 * -2" identifier = (binary_expression "param_6 + local_78 + param_2 * -2" (binary_expression "param_6 + local_78" identifier + identifier) + (binary_expression "param_2 * -2" identifier * number_literal))) ;) (while_statement "while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" { (do_statement "do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);" do (compound_statement "{\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                }" { (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (do_statement "do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);" do (compound_statement "{\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  }" { (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar31 < 2)" ( (binary_expression "iVar31 < 2" identifier < number_literal) )) ;) (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar31 == 2)" ( (binary_expression "iVar31 == 2" identifier == number_literal) )) ;) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" identifier = (subscript_expression "piVar33[2]" identifier [ number_literal ])) ;) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) break;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar28 = piVar33 + 3;" (assignment_expression "piVar28 = piVar33 + 3" identifier = (binary_expression "piVar33 + 3" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" while (parenthesized_expression "(bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1)" ( (comma_expression "bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1" (assignment_expression "bVar1 = iVar30 != iVar31" identifier = (binary_expression "iVar30 != iVar31" identifier != identifier)) , (comma_expression "iVar30 = iVar30 + 1, bVar1" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" { (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "*piVar28 = iVar6 + 1;" (assignment_expression "*piVar28 = iVar6 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 != 0) goto LAB_00043068;" if (parenthesized_expression "(iVar6 + 1 != 0)" ( (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00043068;" goto statement_identifier ;)) })) })) }))) })))) })) (labeled_statement "LAB_00043068:\n        iVar30 = local_78 + param_2 * -2;" statement_identifier : (expression_statement "iVar30 = local_78 + param_2 * -2;" (assignment_expression "iVar30 = local_78 + param_2 * -2" identifier = (binary_expression "local_78 + param_2 * -2" identifier + (binary_expression "param_2 * -2" identifier * number_literal))) ;)) (if_statement "if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }" { (expression_statement "iVar30 = param_2 + iVar30;" (assignment_expression "iVar30 = param_2 + iVar30" identifier = (binary_expression "param_2 + iVar30" identifier + identifier)) ;) (expression_statement "iVar31 = iVar31 - local_78;" (assignment_expression "iVar31 = iVar31 - local_78" identifier = (binary_expression "iVar31 - local_78" identifier - identifier)) ;) (if_statement "if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" { (expression_statement "iVar6 = param_2 + -1;" (assignment_expression "iVar6 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = *param_6;" (assignment_expression "iVar21 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar28 = param_1;" (assignment_expression "piVar28 = param_1" identifier = identifier) ;) (expression_statement "piVar33 = param_6;" (assignment_expression "piVar33 = param_6" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" { (do_statement "do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);" do (compound_statement "{\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = piVar33[1];" (assignment_expression "iVar21 = piVar33[1]" identifier = (subscript_expression "piVar33[1]" identifier [ number_literal ])) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar28 = param_1 + param_2 + -1;" (assignment_expression "piVar28 = param_1 + param_2 + -1" identifier = (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" * identifier) = identifier) ;) })) (expression_statement "param_7 = (uint *)(iVar30 * 4);" (assignment_expression "param_7 = (uint *)(iVar30 * 4)" identifier = (cast_expression "(uint *)(iVar30 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 * 4)" ( (binary_expression "iVar30 * 4" identifier * number_literal) )))) ;) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" (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 "(param_1,param_1,param_6 + param_2,iVar30)" ( identifier , identifier , (binary_expression "param_6 + param_2" identifier + identifier) , identifier )))) ;) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" identifier = (cast_expression "(uint *)(param_1 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar30)" ( (binary_expression "param_1 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" { (if_statement "if (iVar31 < 2) goto LAB_00043184;" if (parenthesized_expression "(iVar31 < 2)" ( (binary_expression "iVar31 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" { (if_statement "if (iVar31 == 2) goto LAB_00043184;" if (parenthesized_expression "(iVar31 == 2)" ( (binary_expression "iVar31 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" identifier = (subscript_expression "puVar25[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) goto LAB_00043a88;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;)) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);" do (compound_statement "{\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              }" { (expression_statement "bVar1 = iVar31 == iVar30;" (assignment_expression "bVar1 = iVar31 == iVar30" identifier = (binary_expression "iVar31 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043184;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043184;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00043a88:\n          param_11 = (uint *)0x0;" statement_identifier : (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" else (compound_statement "{\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" { (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" (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_1,param_6,param_6 + param_2 * 2,iVar30)" ( identifier , identifier , (binary_expression "param_6 + param_2 * 2" identifier + (binary_expression "param_2 * 2" identifier * number_literal)) , identifier )))) ;) (expression_statement "puVar17 = (uint *)(param_6 + iVar30);" (assignment_expression "puVar17 = (uint *)(param_6 + iVar30)" identifier = (cast_expression "(uint *)(param_6 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar30)" ( (binary_expression "param_6 + iVar30" identifier + identifier) )))) ;) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" identifier = (cast_expression "(uint *)(param_1 + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar30)" ( (binary_expression "param_1 + iVar30" identifier + identifier) )))) ;) (expression_statement "iVar30 = param_2 - iVar30;" (assignment_expression "iVar30 = param_2 - iVar30" identifier = (binary_expression "param_2 - iVar30" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar25 = uVar27 + uVar26;" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }" { (if_statement "if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" if (parenthesized_expression "(iVar30 < 2)" ( (binary_expression "iVar30 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }" { (labeled_statement "LAB_00043b4c:\n              param_11 = (uint *)0x1;" statement_identifier : (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" else (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }" { (if_statement "if (iVar30 == 2) goto LAB_00043b4c;" if (parenthesized_expression "(iVar30 == 2)" ( (binary_expression "iVar30 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (if_statement "if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }" if (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }" { (expression_statement "puVar18 = puVar17 + 3;" (assignment_expression "puVar18 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" identifier = (binary_expression "puVar25 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);" do (compound_statement "{\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  }" { (if_statement "if (iVar30 == iVar6) goto LAB_00043b4c;" if (parenthesized_expression "(iVar30 == iVar6)" ( (binary_expression "iVar30 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_00043b4c;" goto statement_identifier ;)) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n                  iVar6 = 3;\n                }" else (compound_statement "{\n                  iVar6 = 3;\n                }" { (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) }))) }) (else_clause "else {\n                iVar6 = 2;\n              }" else (compound_statement "{\n                iVar6 = 2;\n              }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;" if (parenthesized_expression "((puVar25 == puVar17) || (iVar30 <= iVar6))" ( (binary_expression "(puVar25 == puVar17) || (iVar30 <= iVar6)" (parenthesized_expression "(puVar25 == puVar17)" ( (binary_expression "puVar25 == puVar17" identifier == identifier) )) || (parenthesized_expression "(iVar30 <= iVar6)" ( (binary_expression "iVar30 <= iVar6" identifier <= identifier) ))) )) (goto_statement "goto LAB_00044504;" goto statement_identifier ;)) (expression_statement "puVar5 = puVar17 + iVar6;" (assignment_expression "puVar5 = puVar17 + iVar6" identifier = (binary_expression "puVar17 + iVar6" identifier + identifier)) ;) (expression_statement "puVar25 = puVar25 + iVar6;" (assignment_expression "puVar25 = puVar25 + iVar6" identifier = (binary_expression "puVar25 + iVar6" identifier + identifier)) ;) (do_statement "do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);" do (compound_statement "{\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              }" { (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar17 + iVar30 != puVar5)" ( (binary_expression "puVar17 + iVar30 != puVar5" (binary_expression "puVar17 + iVar30" identifier + identifier) != identifier) )) ;) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" else (compound_statement "{\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" { (if_statement "if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" if (parenthesized_expression "((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30))" ( (binary_expression "(puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)" (parenthesized_expression "(puVar25 != puVar17)" ( (binary_expression "puVar25 != puVar17" identifier != identifier) )) && (parenthesized_expression "(puVar5 = puVar17 + 1, 1 < iVar30)" ( (comma_expression "puVar5 = puVar17 + 1, 1 < iVar30" (assignment_expression "puVar5 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) , (binary_expression "1 < iVar30" number_literal < identifier)) ))) )) (compound_statement "{\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" { (do_statement "do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);" do (compound_statement "{\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              }" { (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar5 != puVar17 + iVar30)" ( (binary_expression "puVar5 != puVar17 + iVar30" identifier != (binary_expression "puVar17 + iVar30" identifier + identifier)) )) ;) })) (labeled_statement "LAB_00044504:\n            param_11 = (uint *)0x0;" statement_identifier : (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "param_7 = (uint *)(param_1 + param_2);" (assignment_expression "param_7 = (uint *)(param_1 + param_2)" identifier = (cast_expression "(uint *)(param_1 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2)" ( (binary_expression "param_1 + param_2" identifier + identifier) )))) ;) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" (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 "(param_1,param_1,param_6 + param_2,param_2)" ( identifier , identifier , (binary_expression "param_6 + param_2" identifier + identifier) , identifier )))) ;) (expression_statement "uVar26 = *param_7;" (assignment_expression "uVar26 = *param_7" identifier = (pointer_expression "*param_7" * identifier)) ;) (expression_statement "*param_7 = uVar26 - uVar27;" (assignment_expression "*param_7 = uVar26 - uVar27" (pointer_expression "*param_7" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" if (parenthesized_expression "((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff))" ( (binary_expression "(uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) && (parenthesized_expression "(param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" ( (comma_expression "param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff" (assignment_expression "param_11 = (uint *)((int)param_11 + -1)" identifier = (cast_expression "(uint *)((int)param_11 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_11 + -1)" ( (binary_expression "(int)param_11 + -1" (cast_expression "(int)param_11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "param_11 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" { (labeled_statement "LAB_00043184:\n            iVar30 = *param_1;" statement_identifier : (expression_statement "iVar30 = *param_1;" (assignment_expression "iVar30 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "*param_1 = iVar30 + 1;" (assignment_expression "*param_1 = iVar30 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" { (if_statement "if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" { (labeled_statement "LAB_00043204:\n                param_11 = (uint *)0x1;" statement_identifier : (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00043210;" goto statement_identifier ;) })) (expression_statement "iVar30 = param_1[1];" (assignment_expression "iVar30 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar30 + 1;" (assignment_expression "param_1[1] = iVar30 + 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" { (if_statement "if (param_2 == 2) goto LAB_00043204;" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "iVar30 = param_1[2];" (assignment_expression "iVar30 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = iVar30 + 1;" (assignment_expression "param_1[2] = iVar30 + 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" if (parenthesized_expression "(iVar30 + 1 == 0)" ( (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" { (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" identifier = number_literal) ;) (expression_statement "piVar33 = param_1 + 3;" (assignment_expression "piVar33 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);" do (compound_statement "{\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  }" { (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" identifier = (binary_expression "param_2 == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00043204;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00043204;" goto statement_identifier ;)) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 == 0)" ( (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) (goto_statement "goto LAB_00043a88;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" if (parenthesized_expression "(local_2c == *(int *)puVar4)" ( (binary_expression "local_2c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          return param_11;\n        }" { (return_statement "return param_11;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (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_00045c00:\n        iVar30 = 0x230;" statement_identifier : (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" identifier = number_literal) ;)) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" identifier = (cast_expression "(code *)0x1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_4 = local_84;" (assignment_expression "param_4 = local_84" identifier = identifier) ;) (goto_statement "goto LAB_000427f4;" goto statement_identifier ;) }))) (expression_statement "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_7,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = 1 << (uVar27 & 0x1f);" (assignment_expression "iVar6 = 1 << (uVar27 & 0x1f)" identifier = (binary_expression "1 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "piVar33 = (int *)(iVar6 - 1U & (uint)param_7);" (assignment_expression "piVar33 = (int *)(iVar6 - 1U & (uint)param_7)" identifier = (cast_expression "(int *)(iVar6 - 1U & (uint)param_7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - 1U & (uint)param_7)" ( (binary_expression "iVar6 - 1U & (uint)param_7" (binary_expression "iVar6 - 1U" identifier - number_literal) & (cast_expression "(uint)param_7" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (if_statement "if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" if (parenthesized_expression "(piVar33 == (int *)0x0)" ( (binary_expression "piVar33 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" { (expression_statement "iVar31 = iVar6;" (assignment_expression "iVar31 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }" if (parenthesized_expression "(iVar6 < 0x20)" ( (binary_expression "iVar6 < 0x20" identifier < number_literal) )) (compound_statement "{\n          iVar31 = 0x20;\n        }" { (expression_statement "iVar31 = 0x20;" (assignment_expression "iVar31 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar21 = (int)param_7 >> (uVar27 & 0x1f);" (assignment_expression "iVar21 = (int)param_7 >> (uVar27 & 0x1f)" identifier = (binary_expression "(int)param_7 >> (uVar27 & 0x1f)" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar31 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar31 == 0)" ( (binary_expression "iVar31 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;" (assignment_expression "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" identifier = (binary_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" (parenthesized_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 )" ( (binary_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31" (cast_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" ( (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2" (parenthesized_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f))" ( (binary_expression "((int)param_7 << 5) >> (uVar27 & 0x1f)" (parenthesized_expression "((int)param_7 << 5)" ( (binary_expression "(int)param_7 << 5" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )) >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar32 = iVar31;" (assignment_expression "iVar32 = iVar31" identifier = identifier) ;) (if_statement "if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }" if (parenthesized_expression "(iVar31 < 0)" ( (binary_expression "iVar31 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar32 = iVar31 + 0x1f;\n        }" { (expression_statement "iVar32 = iVar31 + 0x1f;" (assignment_expression "iVar32 = iVar31 + 0x1f" identifier = (binary_expression "iVar31 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar26 = iVar32 >> 5;" (assignment_expression "uVar26 = iVar32 >> 5" identifier = (binary_expression "iVar32 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" if (parenthesized_expression "(iVar30 <= (int)uVar26)" ( (binary_expression "iVar30 <= (int)uVar26" identifier <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" { (while_statement "while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" { (expression_statement "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);" (assignment_expression "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar26,local_6c)" ( identifier , identifier )))) ;) (expression_statement "iVar30 = 1 << (uVar7 & 0x1f);" (assignment_expression "iVar30 = 1 << (uVar7 & 0x1f)" identifier = (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar30 - 1U & uVar26) == 0) break;" if (parenthesized_expression "((iVar30 - 1U & uVar26) == 0)" ( (binary_expression "(iVar30 - 1U & uVar26) == 0" (parenthesized_expression "(iVar30 - 1U & uVar26)" ( (binary_expression "iVar30 - 1U & uVar26" (binary_expression "iVar30 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar26 = -iVar30 & (uVar26 + iVar30) - 1;" (assignment_expression "uVar26 = -iVar30 & (uVar26 + iVar30) - 1" identifier = (binary_expression "-iVar30 & (uVar26 + iVar30) - 1" (unary_expression "-iVar30" - identifier) & (binary_expression "(uVar26 + iVar30) - 1" (parenthesized_expression "(uVar26 + iVar30)" ( (binary_expression "uVar26 + iVar30" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar31 = uVar26 << 5;" (assignment_expression "iVar31 = uVar26 << 5" identifier = (binary_expression "uVar26 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)param_7 <= (int)uVar26) goto LAB_00045524;" if (parenthesized_expression "((int)param_7 <= (int)uVar26)" ( (binary_expression "(int)param_7 <= (int)uVar26" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00045524;" goto statement_identifier ;)) (expression_statement "iVar30 = 4 << (uVar27 & 0x1f);" (assignment_expression "iVar30 = 4 << (uVar27 & 0x1f)" identifier = (binary_expression "4 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar32 = uVar26 + 1;" (assignment_expression "iVar32 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);" (assignment_expression "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" (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_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(iVar32 * 2 << (uVar27 & 0x1f)) << 2" (parenthesized_expression "(iVar32 * 2 << (uVar27 & 0x1f))" ( (binary_expression "iVar32 * 2 << (uVar27 & 0x1f)" (binary_expression "iVar32 * 2" identifier * number_literal) << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" (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_30,iVar32 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "iVar32 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;" (assignment_expression "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" identifier = (binary_expression "iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" identifier + (binary_expression "(iVar32 << (uVar27 & 0x1f)) * 4" (parenthesized_expression "(iVar32 << (uVar27 & 0x1f))" ( (binary_expression "iVar32 << (uVar27 & 0x1f)" identifier << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);" (assignment_expression "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" (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_30,(uVar27 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar27 + 1) * 4" (parenthesized_expression "(uVar27 + 1)" ( (binary_expression "uVar27 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));" (assignment_expression "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" (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_30,8 << (uVar27 & 0x1f))" ( (pointer_expression "&local_30" & identifier) , (binary_expression "8 << (uVar27 & 0x1f)" number_literal << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "iVar31 = iVar31 >> (uVar27 & 0x1f);" (assignment_expression "iVar31 = iVar31 >> (uVar27 & 0x1f)" identifier = (binary_expression "iVar31 >> (uVar27 & 0x1f)" identifier >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" if (parenthesized_expression "((int)uVar27 < 0)" ( (binary_expression "(int)uVar27 < 0" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          *(undefined4 *)*local_68 = 0;\n        }" { (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" * (cast_expression "(undefined4 *)*local_68" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) = number_literal) ;) }) (else_clause "else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" else (compound_statement "{\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" identifier = identifier) ;) (do_statement "do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);" do (compound_statement "{\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          }" { (expression_statement "uVar2 = uVar7 & 0x1f;" (assignment_expression "uVar2 = uVar7 & 0x1f" identifier = (binary_expression "uVar7 & 0x1f" identifier & number_literal)) ;) (expression_statement "*piVar33 = iVar11;" (assignment_expression "*piVar33 = iVar11" (pointer_expression "*piVar33" * identifier) = identifier) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar11 + (4 << uVar2);" (assignment_expression "iVar11 = iVar11 + (4 << uVar2)" identifier = (binary_expression "iVar11 + (4 << uVar2)" identifier + (parenthesized_expression "(4 << uVar2)" ( (binary_expression "4 << uVar2" number_literal << identifier) )))) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 != uVar7)" ( (binary_expression "uVar27 + 1 != uVar7" (binary_expression "uVar27 + 1" identifier + number_literal) != identifier) )) ;) (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" * (cast_expression "(undefined4 *)*local_68" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_68" * identifier))) = number_literal) ;) (if_statement "if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" if (parenthesized_expression "(0 < (int)uVar27)" ( (binary_expression "0 < (int)uVar27" number_literal < (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" { (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" identifier = identifier) ;) (do_statement "do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);" do (compound_statement "{\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            }" { (expression_statement "piVar24 = (int *)*piVar33;" (assignment_expression "piVar24 = (int *)*piVar33" identifier = (cast_expression "(int *)*piVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar33" * identifier))) ;) (expression_statement "piVar29 = piVar24 + iVar11;" (assignment_expression "piVar29 = piVar24 + iVar11" identifier = (binary_expression "piVar24 + iVar11" identifier + identifier)) ;) (expression_statement "piVar28 = (int *)(piVar33[1] + iVar11 * 4);" (assignment_expression "piVar28 = (int *)(piVar33[1] + iVar11 * 4)" identifier = (cast_expression "(int *)(piVar33[1] + iVar11 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar33[1] + iVar11 * 4)" ( (binary_expression "piVar33[1] + iVar11 * 4" (subscript_expression "piVar33[1]" identifier [ number_literal ]) + (binary_expression "iVar11 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);" do (compound_statement "{\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              }" { (expression_statement "iVar12 = *piVar24;" (assignment_expression "iVar12 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "piVar24 = piVar24 + 1;" (assignment_expression "piVar24 = piVar24 + 1" identifier = (binary_expression "piVar24 + 1" identifier + number_literal)) ;) (expression_statement "piVar28[-iVar11] = iVar12 * 2;" (assignment_expression "piVar28[-iVar11] = iVar12 * 2" (subscript_expression "piVar28[-iVar11]" identifier [ (unary_expression "-iVar11" - identifier) ]) = (binary_expression "iVar12 * 2" identifier * number_literal)) ;) (expression_statement "*piVar28 = iVar12 * 2 + 1;" (assignment_expression "*piVar28 = iVar12 * 2 + 1" (pointer_expression "*piVar28" * identifier) = (binary_expression "iVar12 * 2 + 1" (binary_expression "iVar12 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" identifier = (binary_expression "piVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar29 != piVar24)" ( (binary_expression "piVar29 != piVar24" identifier != identifier) )) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar11 << 1;" (assignment_expression "iVar11 = iVar11 << 1" identifier = (binary_expression "iVar11 << 1" identifier << number_literal)) ;) }) while (parenthesized_expression "(local_68 + uVar27 != piVar33)" ( (binary_expression "local_68 + uVar27 != piVar33" (binary_expression "local_68 + uVar27" identifier + identifier) != identifier) )) ;) })) }))) (expression_statement "iVar11 = (int)param_7 * 4;" (assignment_expression "iVar11 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" if (parenthesized_expression "(0 < iVar23)" ( (binary_expression "0 < iVar23" number_literal < identifier) )) (compound_statement "{\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" { (expression_statement "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1" identifier = (binary_expression "(iVar21 << (uVar27 & 0x1f)) + 1" (parenthesized_expression "(iVar21 << (uVar27 & 0x1f))" ( (binary_expression "iVar21 << (uVar27 & 0x1f)" identifier << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x2170)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x2170)" ( (binary_expression "PTR_LAB_0009d078 + 0x2170" identifier + number_literal) )))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0xd98)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0xd98)" ( (binary_expression "PTR_LAB_0009d078 + 0xd98" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);" do (compound_statement "{\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          }" { (expression_statement "puVar25 = local_84 + iVar12;" (assignment_expression "puVar25 = local_84 + iVar12" identifier = (binary_expression "local_84 + iVar12" identifier + identifier)) ;) (expression_statement "piVar28 = (int *)*puVar25;" (assignment_expression "piVar28 = (int *)*puVar25" identifier = (cast_expression "(int *)*puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (expression_statement "piVar24 = piVar28 + (int)param_7;" (assignment_expression "piVar24 = piVar28 + (int)param_7" identifier = (binary_expression "piVar28 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar33 = piVar28;" (assignment_expression "piVar33 = piVar28" identifier = identifier) ;) (if_statement "if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar24 != 0)" ( (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" { (do_statement "do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);" do (compound_statement "{\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              }" { (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }" if (parenthesized_expression "(*piVar24 == 0)" ( (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" * identifier) == number_literal) )) (compound_statement "{\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }" { (expression_statement "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);" (assignment_expression "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" identifier = (cast_expression "(int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" (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 "(piVar28,0,iVar11)" ( identifier , number_literal , identifier ))))) ;) (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar24 = 0;\n              }" else (compound_statement "{\n                *piVar24 = 0;\n              }" { (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" * identifier) = number_literal) ;) }))) })) (if_statement "if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" if (parenthesized_expression "(local_84 == param_4)" ( (binary_expression "local_84 == param_4" identifier == identifier) )) (compound_statement "{\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }" { (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" else (compound_statement "{\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" { (expression_statement "piVar24 = (int *)param_4[iVar12];" (assignment_expression "piVar24 = (int *)param_4[iVar12]" identifier = (cast_expression "(int *)param_4[iVar12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[iVar12]" identifier [ identifier ]))) ;) (expression_statement "piVar29 = piVar24 + (int)param_7;" (assignment_expression "piVar29 = piVar24 + (int)param_7" identifier = (binary_expression "piVar24 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" identifier = identifier) ;) (if_statement "if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" if (parenthesized_expression "(*piVar29 != 0)" ( (binary_expression "*piVar29 != 0" (pointer_expression "*piVar29" * identifier) != number_literal) )) (compound_statement "{\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" { (do_statement "do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);" do (compound_statement "{\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                }" { (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" identifier = (pointer_expression "*piVar33" * identifier)) ;) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" * identifier) = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" identifier = (binary_expression "piVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }" if (parenthesized_expression "(*piVar29 == 0)" ( (binary_expression "*piVar29 == 0" (pointer_expression "*piVar29" * identifier) == number_literal) )) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11)" (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 "(piVar24,0,iVar11)" ( identifier , number_literal , identifier ))) ;) (expression_statement "*piVar29 = 1;" (assignment_expression "*piVar29 = 1" (pointer_expression "*piVar29" * identifier) = number_literal) ;) }) (else_clause "else {\n                  *piVar29 = 0;\n                }" else (compound_statement "{\n                  *piVar29 = 0;\n                }" { (expression_statement "*piVar29 = 0;" (assignment_expression "*piVar29 = 0" (pointer_expression "*piVar29" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" ( identifier , identifier , identifier , identifier , (subscript_expression "param_4[iVar12]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);" (assignment_expression "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" identifier = (call_expression "(*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" ( (pointer_expression "*puVar25" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(*puVar25 + iVar11) = uVar16;" (assignment_expression "*(undefined4 *)(*puVar25 + iVar11) = uVar16" (pointer_expression "*(undefined4 *)(*puVar25 + iVar11)" * (cast_expression "(undefined4 *)(*puVar25 + iVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + iVar11)" ( (binary_expression "*puVar25 + iVar11" (pointer_expression "*puVar25" * identifier) + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(iVar23 != iVar12)" ( (binary_expression "iVar23 != iVar12" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00042c64;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" ( (binary_expression "PTR_LAB_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_0009d06c + 0x4d20" identifier + number_literal) ))) ;) (labeled_statement "LAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" statement_identifier : (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" * (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" ( (binary_expression "PTR_LAB_0009d06c + 0x4d14" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_0009d06c + 0x4d34" identifier + number_literal) ))) ;)) (labeled_statement "LAB_0004555c:\n      iVar30 = param_9 << 3;" statement_identifier : (expression_statement "iVar30 = param_9 << 3;" (assignment_expression "iVar30 = param_9 << 3" identifier = (binary_expression "param_9 << 3" identifier << number_literal)) ;)) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" ( (binary_expression "PTR_LAB_0009d078 + 0x1610" identifier + number_literal) )))) ;) (expression_statement "piVar28 = local_68 + -2;" (assignment_expression "piVar28 = local_68 + -2" identifier = (binary_expression "local_68 + -2" identifier + number_literal)) ;) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" identifier (argument_list "(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "puVar25 = param_5 + 1;" (assignment_expression "puVar25 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 2" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" if (parenthesized_expression "(iVar20 < 1)" ( (binary_expression "iVar20 < 1" identifier < number_literal) )) (compound_statement "{\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }" { (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) }) (else_clause "else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" else (compound_statement "{\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" { (expression_statement "piVar29 = piVar24 + iVar20 * 2;" (assignment_expression "piVar29 = piVar24 + iVar20 * 2" identifier = (binary_expression "piVar24 + iVar20 * 2" identifier + (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_5;" (assignment_expression "puVar17 = param_5" identifier = identifier) ;) (do_statement "do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);" do (compound_statement "{\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        }" { (expression_statement "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(param_11,puVar17[2],local_78 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar17[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar18 = (uint *)puVar17[2];" (assignment_expression "puVar18 = (uint *)puVar17[2]" identifier = (cast_expression "(uint *)puVar17[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" ( (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" ( identifier , (pointer_expression "*puVar17" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar6);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar6)" identifier = (binary_expression "iVar21 - (uVar27 + iVar6)" identifier - (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" identifier = (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" (binary_expression "iVar31 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar6) - iVar21" (parenthesized_expression "(uVar27 + iVar6)" ( (binary_expression "uVar27 + iVar6" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar18[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar31 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" { (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" identifier = (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_00045614;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045614;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) }) (else_clause "else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" else (compound_statement "{\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" { (labeled_statement "LAB_00045614:\n            puVar18 = (uint *)*puVar17;" statement_identifier : (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" identifier = (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar6 = uVar27 + uVar26 + iVar6;" (assignment_expression "iVar6 = uVar27 + uVar26 + iVar6" identifier = (binary_expression "uVar27 + uVar26 + iVar6" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar6 - 1;" (assignment_expression "uVar27 = iVar6 - 1" identifier = (binary_expression "iVar6 - 1" identifier - number_literal)) ;) (if_statement "if (iVar6 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar18[(int)param_7] = iVar6 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar6 - uVar27" (subscript_expression "puVar18[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar6 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" identifier = (binary_expression "puVar17 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar29)" ( (binary_expression "piVar24 != piVar29" identifier != identifier) )) ;) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" identifier = (cast_expression "(int *)local_68[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_68[-1]" identifier [ number_literal ]))) ;) (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" ( (binary_expression "param_5 + 3" identifier + number_literal) , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar28 = piVar24 + iVar20 * 2;" (assignment_expression "piVar28 = piVar24 + iVar20 * 2" identifier = (binary_expression "piVar24 + iVar20 * 2" identifier + (binary_expression "iVar20 * 2" identifier * number_literal))) ;) (do_statement "do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);" do (compound_statement "{\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        }" { (expression_statement "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(param_11,puVar25[2],local_78 * *piVar24,param_7)" ( identifier , (subscript_expression "puVar25[2]" identifier [ number_literal ]) , (binary_expression "local_78 * *piVar24" identifier * (pointer_expression "*piVar24" * identifier)) , identifier ))) ;) (expression_statement "puVar17 = (uint *)puVar25[2];" (assignment_expression "puVar17 = (uint *)puVar25[2]" identifier = (cast_expression "(uint *)puVar25[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar25[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4)" identifier = (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" * (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" ( (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" * identifier) + (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" ( identifier , (pointer_expression "*puVar25" * identifier) , identifier , identifier )))) ;) (expression_statement "iVar6 = iVar31 - (uVar27 + iVar30);" (assignment_expression "iVar6 = iVar31 - (uVar27 + iVar30)" identifier = (binary_expression "iVar31 - (uVar27 + iVar30)" identifier - (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )))) ;) (expression_statement "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;" (assignment_expression "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" identifier = (binary_expression "iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" (binary_expression "iVar6 >> 0x1f" identifier >> number_literal) & (binary_expression "(uVar27 + iVar30) - iVar31" (parenthesized_expression "(uVar27 + iVar30)" ( (binary_expression "uVar27 + iVar30" identifier + identifier) )) - identifier))) ;) (expression_statement "puVar17[(int)param_7] = iVar6 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar6 + uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar6 + uVar27" identifier + identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" if (parenthesized_expression "(uVar27 + uVar26 < uVar27)" ( (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" { (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" { (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" identifier = (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar27 != 0) goto LAB_000457d8;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000457d8;" goto statement_identifier ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 + 1 == 0)" ( (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) }) (else_clause "else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" else (compound_statement "{\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" { (labeled_statement "LAB_000457d8:\n            puVar17 = (uint *)*puVar25;" statement_identifier : (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" identifier = (cast_expression "(uint *)*puVar25" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;)) }))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" identifier = (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" identifier = (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" identifier + identifier) + identifier)) ;) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" identifier = (binary_expression "iVar30 - 1" identifier - number_literal)) ;) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar27 = 0;\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) })) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" identifier [ (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "iVar30 - uVar27" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar26 - uVar27" identifier - identifier)) ;) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" if (parenthesized_expression "(uVar26 < uVar27)" ( (binary_expression "uVar26 < uVar27" identifier < identifier) )) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" { (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" do (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" { (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) (if_statement "if (uVar27 != 0) break;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar27 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) ;) })) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" identifier = (binary_expression "piVar24 + 2" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 4;" (assignment_expression "puVar25 = puVar25 + 4" identifier = (binary_expression "puVar25 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar24 != piVar28)" ( (binary_expression "piVar24 != piVar28" identifier != identifier) )) ;) }))) }) while (parenthesized_expression "(local_7c < 1)" ( (binary_expression "local_7c < 1" identifier < number_literal) )) ;)) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" identifier = (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" identifier = (binary_expression "param_11 + (int)param_7" identifier + (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" identifier = (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" ( (binary_expression "PTR_LAB_0009d078 + 0x790" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (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 *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = IDENT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (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) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression 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) + IDENT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) + IDENT) )))) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression 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) + IDENT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression 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) + IDENT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) + IDENT) )))) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_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 ( (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression 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) + IDENT) )))) = IDENT) ;) })) (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( IDENT )) - IDENT)) )) (compound_statement { (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 * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression 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) + IDENT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (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) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (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 + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) , (binary_expression (binary_expression IDENT + IDENT) < IDENT))) ))) )) && (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression (binary_expression IDENT + LIT) == LIT) && (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) != LIT) ))))) )) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) != LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) - IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (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 = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (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 , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT - IDENT) & IDENT) ]) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) }))) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT - IDENT) & IDENT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) }))) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) }) 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 - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) + LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) }))) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT))) ))) )) ))))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT != IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) })) })) }))) })))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_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 + 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 = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (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 ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (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) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) )) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) * LIT) + IDENT) + LIT) + IDENT) ))) / IDENT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT << IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression 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 (subscript_expression IDENT [ (unary_expression - IDENT) ]) = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != 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 + IDENT) != IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 ( IDENT , LIT , IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , (subscript_expression IDENT [ IDENT ]) , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_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 != IDENT) )) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "uint * FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)\n\n{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" (type_identifier "uint") (pointer_declarator "* FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" (* "*") (function_declarator "FUN_00042170(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" (identifier "FUN_00042170") (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,int *param_6,\n                   uint *param_7,int param_8,int param_9,int param_10,uint *param_11,int param_12)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint *param_5" (type_identifier "uint") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "uint *param_7" (type_identifier "uint") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "int param_10" (primitive_type "int") (identifier "param_10")) (, ",") (parameter_declaration "uint *param_11" (type_identifier "uint") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) (, ",") (parameter_declaration "int param_12" (primitive_type "int") (identifier "param_12")) () ")")))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int *piVar24;\n  uint *puVar25;\n  uint uVar26;\n  uint uVar27;\n  int *piVar28;\n  int *piVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int *piVar33;\n  code *local_90;\n  uint *local_84;\n  uint local_80;\n  int local_7c;\n  int local_78;\n  int local_70;\n  code *local_6c;\n  int *local_68;\n  int *local_5c;\n  int local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0009d540;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  iVar23 = 1 << (param_3 & 0x1f);\n  local_70 = param_9 * 2;\n  iVar20 = iVar23 >> 2;\n  local_84 = param_4;\n  if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }\n  local_68 = (int *)(param_10 + param_3 * 4);\n  local_7c = iVar23 >> 1;\n  local_78 = param_9 * 4;\n  piVar33 = (int *)*local_68;\n  if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }\nLAB_000437b8:\n  iVar6 = 0;\n  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  puVar17 = param_4;\n  do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);\n  if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }\n  piVar33 = (int *)*local_68;\n  if (local_7c != 2) goto LAB_0004555c;\n  puVar25 = (uint *)*param_5;\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }\n  iVar31 = (int)param_7 + 1;\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);\n  puVar25 = (uint *)*param_5;\n  puVar17 = (uint *)((int)puVar25 + iVar30);\n  if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }\nLAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }\nLAB_0004413c:\n  puVar25 = (uint *)param_5[1];\n  if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }\n  puVar17 = (uint *)((int)param_11 + iVar30);\n  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);\n  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);\n  puVar25 = (uint *)param_5[1];\n  uVar27 = *(uint *)((int)puVar25 + iVar30);\n  uVar26 = uVar27 - 1;\n  if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }\n  if (iVar6 == 0) goto LAB_000442ec;\n  puVar25 = (uint *)param_5[3];\n  piVar28 = (int *)((int)puVar25 + iVar30);\n  iVar6 = *piVar28;\n  uVar27 = *puVar25 - iVar6;\n  *puVar25 = uVar27;\n  if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }\n  *piVar28 = 0;\nLAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "uint *puVar25;" (type_identifier "uint") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "int *piVar29;" (primitive_type "int") (pointer_declarator "*piVar29" (* "*") (identifier "piVar29")) (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "int iVar31;" (primitive_type "int") (identifier "iVar31") (; ";")) (declaration "int iVar32;" (primitive_type "int") (identifier "iVar32") (; ";")) (declaration "int *piVar33;" (primitive_type "int") (pointer_declarator "*piVar33" (* "*") (identifier "piVar33")) (; ";")) (declaration "code *local_90;" (type_identifier "code") (pointer_declarator "*local_90" (* "*") (identifier "local_90")) (; ";")) (declaration "uint *local_84;" (type_identifier "uint") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "uint local_80;" (type_identifier "uint") (identifier "local_80") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "code *local_6c;" (type_identifier "code") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "int *local_68;" (primitive_type "int") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int *local_5c;" (primitive_type "int") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0009d540" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (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 "iVar23 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar23 = 1 << (param_3 & 0x1f)" (identifier "iVar23") (= "=") (binary_expression "1 << (param_3 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "local_70 = param_9 * 2;" (assignment_expression "local_70 = param_9 * 2" (identifier "local_70") (= "=") (binary_expression "param_9 * 2" (identifier "param_9") (* "*") (number_literal "2"))) (; ";")) (expression_statement "iVar20 = iVar23 >> 2;" (assignment_expression "iVar20 = iVar23 >> 2" (identifier "iVar20") (= "=") (binary_expression "iVar23 >> 2" (identifier "iVar23") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "local_84 = param_4;" (assignment_expression "local_84 = param_4" (identifier "local_84") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_3 == 1) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);\n    puVar25 = (uint *)*param_4;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }\n    if (param_12 != 0) goto LAB_000427e4;\n    puVar25 = (uint *)*param_5;\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);\n    puVar25 = (uint *)*param_5;\n    uVar27 = *(uint *)((int)puVar25 + iVar30);\n    if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }\n    if (iVar6 == 0) goto LAB_000446c4;\n    puVar25 = (uint *)param_5[1];\n    iVar6 = *(int *)((int)puVar25 + iVar30);\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    iVar6 = 0;\nLAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;\n    goto LAB_000446c4;\n  }" ({ "{") (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" (if "if") (parenthesized_expression "(param_7 == (uint *)0xffffffff)" (( "(") (binary_expression "param_7 == (uint *)0xffffffff" (identifier "param_7") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      iVar30 = -4;\n    }" ({ "{") (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" (identifier "iVar30") (= "=") (number_literal "-4")) (; ";")) (} "}")) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" (else "else") (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" (identifier "puVar5") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" (identifier "puVar18") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" (if "if") (parenthesized_expression "(param_7 == (uint *)0x0)" (( "(") (binary_expression "param_7 == (uint *)0x0" (identifier "param_7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" ({ "{") (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" (identifier "iVar30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "uVar27")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" (else "else") (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" ({ "{") (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" ({ "{") (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" (identifier "param_11") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (identifier "uVar27")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31)" (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 "(puVar25,puVar25,param_4[1],iVar31)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31)" (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 "(param_4[1],param_11,param_4[1],iVar31)" (( "(") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }\n      else {\nLAB_00044428:\n        uVar27 = 1;\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }\nLAB_00042730:\n        uVar27 = 0;\n      }" ({ "{") (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_00044428;\n        }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00042730;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042730;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00042730;" (goto "goto") (statement_identifier "LAB_00042730") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" (do "do") (compound_statement "{\n                if (param_7 == puVar5) goto LAB_00042730;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_00042730;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_00042730;" (goto "goto") (statement_identifier "LAB_00042730") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00044428;" (goto "goto") (statement_identifier "LAB_00044428") (; ";")) (} "}"))) (labeled_statement "LAB_00042730:\n        uVar27 = 0;" (statement_identifier "LAB_00042730") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00044428:\n        uVar27 = 1;\n      }" (else "else") (compound_statement "{\nLAB_00044428:\n        uVar27 = 1;\n      }" ({ "{") (labeled_statement "LAB_00044428:\n        uVar27 = 1;" (statement_identifier "LAB_00044428") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar25 = (uint *)param_4[1];\n      iVar6 = *(int *)((int)puVar25 + iVar30);\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }\n      *(int *)((int)puVar25 + iVar30) = iVar6;\n    }" ({ "{") (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }\n      else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }\nLAB_000427cc:\n        iVar6 = 1;\n      }" ({ "{") (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n          goto LAB_000444cc;\n        }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_000427cc;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000427cc;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000427cc;" (goto "goto") (statement_identifier "LAB_000427cc") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                if (param_7 == puVar5) goto LAB_000427cc;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_000427cc;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_000427cc;" (goto "goto") (statement_identifier "LAB_000427cc") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000444cc;" (goto "goto") (statement_identifier "LAB_000444cc") (; ";")) (} "}"))) (labeled_statement "LAB_000427cc:\n        iVar6 = 1;" (statement_identifier "LAB_000427cc") (: ":") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\nLAB_000444cc:\n        iVar6 = 0;\n      }" (else "else") (compound_statement "{\nLAB_000444cc:\n        iVar6 = 0;\n      }" ({ "{") (labeled_statement "LAB_000444cc:\n        iVar6 = 0;" (statement_identifier "LAB_000444cc") (: ":") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";"))) (} "}")))) (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (if_statement "if (param_12 != 0) goto LAB_000427e4;" (if "if") (parenthesized_expression "(param_12 != 0)" (( "(") (binary_expression "param_12 != 0" (identifier "param_12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000427e4;" (goto "goto") (statement_identifier "LAB_000427e4") (; ";"))) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_5" (* "*") (identifier "param_5")))) (; ";")) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar17 = puVar25;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" (identifier "puVar5") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" (identifier "puVar18") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" ({ "{") (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar18 != (uint *)0x0);" (do "do") (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar17[1];\n          puVar5 = puVar5 + 1;\n          puVar17 = puVar17 + 1;\n        }" ({ "{") (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -1)" (( "(") (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)0x0)" (( "(") (binary_expression "puVar18 != (uint *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31)" (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 "(puVar25,puVar25,param_5[1],iVar31)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31)" (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 "(param_5[1],param_11,param_5[1],iVar31)" (( "(") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_5" (* "*") (identifier "param_5")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (if_statement "if (1 < uVar27) {\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = uVar27 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }\n      *(uint *)((int)puVar25 + iVar30) = uVar27;\n    }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }\n      else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }\nLAB_0004461c:\n        uVar27 = 0;\n      }" ({ "{") (if_statement "if (1 < (int)param_7) {\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 - 1;\n          if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }\n          goto LAB_000446dc;\n        }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004461c;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 - 1;\n            if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004461c;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_0004461c;" (goto "goto") (statement_identifier "LAB_0004461c") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar25 + 3;\n              do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);\n            }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 == 0);" (do "do") (compound_statement "{\n                if (param_7 == puVar5) goto LAB_0004461c;\n                uVar27 = *puVar17;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                *puVar17 = uVar27 - 1;\n                puVar17 = puVar17 + 1;\n              }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_0004461c;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_0004461c;" (goto "goto") (statement_identifier "LAB_0004461c") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000446dc;" (goto "goto") (statement_identifier "LAB_000446dc") (; ";")) (} "}"))) (labeled_statement "LAB_0004461c:\n        uVar27 = 0;" (statement_identifier "LAB_0004461c") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_000446dc:\n        uVar27 = 1;\n      }" (else "else") (compound_statement "{\nLAB_000446dc:\n        uVar27 = 1;\n      }" ({ "{") (labeled_statement "LAB_000446dc:\n        uVar27 = 1;" (statement_identifier "LAB_000446dc") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar6 == 0) goto LAB_000446c4;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000446c4;" (goto "goto") (statement_identifier "LAB_000446c4") (; ";"))) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_5[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar6 = *(int *)((int)puVar25 + iVar30);" (assignment_expression "iVar6 = *(int *)((int)puVar25 + iVar30)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000446b8:\n        iVar6 = 1;\n        goto LAB_000446bc;\n      }" ({ "{") (labeled_statement "LAB_000446b8:\n        iVar6 = 1;" (statement_identifier "LAB_000446b8") (: ":") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000446bc;" (goto "goto") (statement_identifier "LAB_000446bc") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_000446b8;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000446b8;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000446b8;" (goto "goto") (statement_identifier "LAB_000446b8") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar17 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);\n        }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n            if (param_7 == puVar5) goto LAB_000446b8;\n            uVar27 = *puVar17;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar17 = uVar27 + 1;\n            puVar17 = puVar17 + 1;\n          }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_000446b8;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_000446b8;" (goto "goto") (statement_identifier "LAB_000446b8") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000446bc:\n    *(int *)((int)puVar25 + iVar30) = iVar6;" (statement_identifier "LAB_000446bc") (: ":") (expression_statement "*(int *)((int)puVar25 + iVar30) = iVar6;" (assignment_expression "*(int *)((int)puVar25 + iVar30) = iVar6" (pointer_expression "*(int *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "iVar6")) (; ";"))) (goto_statement "goto LAB_000446c4;" (goto "goto") (statement_identifier "LAB_000446c4") (; ";")) (} "}"))) (expression_statement "local_68 = (int *)(param_10 + param_3 * 4);" (assignment_expression "local_68 = (int *)(param_10 + param_3 * 4)" (identifier "local_68") (= "=") (cast_expression "(int *)(param_10 + param_3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_10 + param_3 * 4)" (( "(") (binary_expression "param_10 + param_3 * 4" (identifier "param_10") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "local_7c = iVar23 >> 1;" (assignment_expression "local_7c = iVar23 >> 1" (identifier "local_7c") (= "=") (binary_expression "iVar23 >> 1" (identifier "iVar23") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_78 = param_9 * 4;" (assignment_expression "local_78 = param_9 * 4" (identifier "local_78") (= "=") (binary_expression "param_9 * 4" (identifier "param_9") (* "*") (number_literal "4"))) (; ";")) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" (identifier "piVar33") (= "=") (cast_expression "(int *)*local_68" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_68" (* "*") (identifier "local_68")))) (; ";")) (if_statement "if (local_7c == 2) {\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }\n  else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" (if "if") (parenthesized_expression "(local_7c == 2)" (( "(") (binary_expression "local_7c == 2" (identifier "local_7c") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    puVar25 = (uint *)*param_4;\n    if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }\n    iVar31 = (int)param_7 + 1;\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);\n    puVar25 = (uint *)*param_4;\n    puVar17 = (uint *)((int)puVar25 + iVar30);\n    if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }\nLAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\nLAB_00043604:\n    puVar17 = (uint *)param_4[1];\n    if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }\n    puVar25 = (uint *)((int)param_11 + iVar30);\n    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);\n    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);\n    puVar17 = (uint *)param_4[1];\n    puVar5 = (uint *)((int)puVar17 + iVar30);\n    if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }\nLAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }\n  }" ({ "{") (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (if_statement "if (param_7 == (uint *)0xffffffff) {\n      iVar30 = -4;\n    }\n    else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" (if "if") (parenthesized_expression "(param_7 == (uint *)0xffffffff)" (( "(") (binary_expression "param_7 == (uint *)0xffffffff" (identifier "param_7") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      iVar30 = -4;\n    }" ({ "{") (expression_statement "iVar30 = -4;" (assignment_expression "iVar30 = -4" (identifier "iVar30") (= "=") (number_literal "-4")) (; ";")) (} "}")) (else_clause "else {\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" (else "else") (compound_statement "{\n      uVar27 = *puVar25;\n      puVar5 = param_7;\n      puVar18 = param_11;\n      puVar17 = puVar25;\n      if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }\n    }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" (identifier "puVar5") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" (identifier "puVar18") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 == (uint *)0x0) {\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }\n      else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" (if "if") (parenthesized_expression "(param_7 == (uint *)0x0)" (( "(") (binary_expression "param_7 == (uint *)0x0" (identifier "param_7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar30 = 0;\n        *param_11 = uVar27;\n      }" ({ "{") (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" (identifier "iVar30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "uVar27")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" (else "else") (compound_statement "{\n        do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);\n        iVar30 = (int)param_7 * 4;\n        param_11[(int)param_7] = uVar27;\n      }" ({ "{") (do_statement "do {\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n          *puVar18 = uVar27;\n          puVar5 = (uint *)((int)puVar5 + -1);\n          uVar27 = puVar17[1];\n          puVar18 = puVar18 + 1;\n          puVar17 = puVar17 + 1;\n        }" ({ "{") (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "param_11[(int)param_7] = uVar27;" (assignment_expression "param_11[(int)param_7] = uVar27" (subscript_expression "param_11[(int)param_7]" (identifier "param_11") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (identifier "uVar27")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31)" (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 "(puVar25,puVar25,param_4[2],iVar31)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31)" (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 "(param_4[2],param_11,param_4[2],iVar31)" (( "(") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (if_statement "if (1 < *puVar17) {\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" (if "if") (parenthesized_expression "(1 < *puVar17)" (( "(") (binary_expression "1 < *puVar17" (number_literal "1") (< "<") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) () ")")) (compound_statement "{\n      uVar26 = *puVar25;\n      uVar27 = *puVar17 - 1;\n      *puVar25 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar17 = 1;\n    }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" (identifier "uVar27") (= "=") (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0004355c:\n          *puVar17 = 0;\n          goto LAB_00043564;\n        }" ({ "{") (labeled_statement "LAB_0004355c:\n          *puVar17 = 0;" (statement_identifier "LAB_0004355c") (: ":") (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00043564;" (goto "goto") (statement_identifier "LAB_00043564") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_0004355c;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }\n        }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004355c;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_0004355c;" (goto "goto") (statement_identifier "LAB_0004355c") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              if (param_7 == puVar5) goto LAB_0004355c;\n              uVar27 = *puVar25;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              *puVar25 = uVar27 - 1;\n              puVar25 = puVar25 + 1;\n            }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_0004355c;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_0004355c;" (goto "goto") (statement_identifier "LAB_0004355c") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (labeled_statement "LAB_00043564:\n    if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" (statement_identifier "LAB_00043564") (: ":") (if_statement "if (iVar6 != 0) {\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar25 = (uint *)param_4[2];\n      piVar28 = (int *)((int)puVar25 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar25 - iVar6;\n      *puVar25 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" ({ "{") (expression_statement "puVar25 = (uint *)param_4[2];" (assignment_expression "puVar25 = (uint *)param_4[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" (identifier "piVar28") (= "=") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" (identifier "iVar6") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000435f8:\n          *piVar28 = 1;\n          goto LAB_00043604;\n        }" ({ "{") (labeled_statement "LAB_000435f8:\n          *piVar28 = 1;" (statement_identifier "LAB_000435f8") (: ":") (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_00043604;" (goto "goto") (statement_identifier "LAB_00043604") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000435f8;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000435f8;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000435f8;" (goto "goto") (statement_identifier "LAB_000435f8") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar17 = (uint *)0x3;\n            puVar25 = puVar25 + 3;\n            do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);\n          }" ({ "{") (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" (identifier "puVar17") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              if (param_7 == puVar17) goto LAB_000435f8;\n              uVar27 = *puVar25;\n              puVar17 = (uint *)((int)puVar17 + 1);\n              *puVar25 = uVar27 + 1;\n              puVar25 = puVar25 + 1;\n            }" ({ "{") (if_statement "if (param_7 == puVar17) goto LAB_000435f8;" (if "if") (parenthesized_expression "(param_7 == puVar17)" (( "(") (binary_expression "param_7 == puVar17" (identifier "param_7") (== "==") (identifier "puVar17")) () ")")) (goto_statement "goto LAB_000435f8;" (goto "goto") (statement_identifier "LAB_000435f8") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar17 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + 1)" (( "(") (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_00043604:\n    puVar17 = (uint *)param_4[1];" (statement_identifier "LAB_00043604") (: ":") (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (if_statement "if (param_7 != (uint *)0xffffffff) {\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      uVar27 = *puVar17;\n      puVar5 = param_11;\n      puVar18 = param_7;\n      puVar25 = puVar17;\n      if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }\n      *puVar5 = uVar27;\n    }" ({ "{") (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" (identifier "puVar5") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" (identifier "puVar18") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" (identifier "puVar25") (= "=") (identifier "puVar17")) (; ";")) (if_statement "if (param_7 != (uint *)0x0) {\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);\n        puVar5 = (uint *)((int)param_11 + iVar30);\n      }" ({ "{") (do_statement "do {\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        } while (puVar18 != (uint *)0x0);" (do "do") (compound_statement "{\n          *puVar5 = uVar27;\n          puVar18 = (uint *)((int)puVar18 + -1);\n          uVar27 = puVar25[1];\n          puVar5 = puVar5 + 1;\n          puVar25 = puVar25 + 1;\n        }" ({ "{") (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -1)" (( "(") (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)0x0)" (( "(") (binary_expression "puVar18 != (uint *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar30)" (identifier "puVar25") (= "=") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31)" (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 "(puVar17,puVar17,param_4[3],iVar31)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31)" (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 "(param_4[3],param_11,param_4[3],iVar31)" (( "(") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar17 = (uint *)param_4[1];" (assignment_expression "puVar17 = (uint *)param_4[1]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar17 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)puVar17 + iVar30)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar17 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar30)" (( "(") (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (if_statement "if (1 < *puVar5) {\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" (if "if") (parenthesized_expression "(1 < *puVar5)" (( "(") (binary_expression "1 < *puVar5" (number_literal "1") (< "<") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) () ")")) (compound_statement "{\n      uVar26 = *puVar17;\n      uVar27 = *puVar5 - 1;\n      *puVar17 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }\n      *puVar5 = 1;\n    }" ({ "{") (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "uVar27 = *puVar5 - 1;" (assignment_expression "uVar27 = *puVar5 - 1" (identifier "uVar27") (= "=") (binary_expression "*puVar5 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n      }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043714:\n          *puVar5 = 0;\n          goto LAB_0004371c;\n        }" ({ "{") (labeled_statement "LAB_00043714:\n          *puVar5 = 0;" (statement_identifier "LAB_00043714") (: ":") (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_0004371c;" (goto "goto") (statement_identifier "LAB_0004371c") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00043714;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }\n        }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043714;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00043714;" (goto "goto") (statement_identifier "LAB_00043714") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00043714;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n              puVar17 = puVar17 + 1;\n            }" ({ "{") (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar18" (identifier "param_7") (== "==") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + 1)" (( "(") (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_00043714;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00043714;" (goto "goto") (statement_identifier "LAB_00043714") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (labeled_statement "LAB_0004371c:\n    if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" (statement_identifier "LAB_0004371c") (: ":") (if_statement "if (iVar6 != 0) {\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar17 = (uint *)param_4[3];\n      piVar28 = (int *)((int)puVar17 + iVar30);\n      iVar6 = *piVar28;\n      uVar27 = *puVar17 - iVar6;\n      *puVar17 = uVar27;\n      if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }\n      *piVar28 = 0;\n    }" ({ "{") (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar28 = (int *)((int)puVar17 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar17 + iVar30)" (identifier "piVar28") (= "=") (cast_expression "(int *)((int)puVar17 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar30)" (( "(") (binary_expression "(int)puVar17 + iVar30" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" (identifier "iVar6") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "uVar27 = *puVar17 - iVar6;" (assignment_expression "uVar27 = *puVar17 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar17 - iVar6" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n        if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }\n        uVar27 = puVar17[1];\n        puVar17[1] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }\n      }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000437ac:\n          *piVar28 = 1;\n          goto LAB_000437b8;\n        }" ({ "{") (labeled_statement "LAB_000437ac:\n          *piVar28 = 1;" (statement_identifier "LAB_000437ac") (: ":") (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000437b8;" (goto "goto") (statement_identifier "LAB_000437b8") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_000437ac;\n          uVar27 = puVar17[2];\n          puVar17[2] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }\n        }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000437ac;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000437ac;" (goto "goto") (statement_identifier "LAB_000437ac") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar5 = (uint *)0x3;\n            puVar17 = puVar17 + 3;\n            do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);\n          }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              bVar1 = param_7 == puVar5;\n              puVar5 = (uint *)((int)puVar5 + 1);\n              if (bVar1) goto LAB_000437ac;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n              puVar17 = puVar17 + 1;\n            }" ({ "{") (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_000437ac;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_000437ac;" (goto "goto") (statement_identifier "LAB_000437ac") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" (else "else") (compound_statement "{\n    piVar28 = (int *)local_68[-1];\n    iVar6 = param_9 * 8;\n    iVar30 = iVar23 >> 3;\n    if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }\n    iVar30 = (int)param_7 * 4;\n    if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }\n    puVar25 = param_11 + (int)param_7;\n  }" ({ "{") (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" (identifier "piVar28") (= "=") (cast_expression "(int *)local_68[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-1]" (identifier "local_68") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "iVar6 = param_9 * 8;" (assignment_expression "iVar6 = param_9 * 8" (identifier "iVar6") (= "=") (binary_expression "param_9 * 8" (identifier "param_9") (* "*") (number_literal "8"))) (; ";")) (expression_statement "iVar30 = iVar23 >> 3;" (assignment_expression "iVar30 = iVar23 >> 3" (identifier "iVar30") (= "=") (binary_expression "iVar23 >> 3" (identifier "iVar23") (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (iVar20 == 2) {\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }\n    else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" (if "if") (parenthesized_expression "(iVar20 == 2)" (( "(") (binary_expression "iVar20 == 2" (identifier "iVar20") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      puVar25 = (uint *)*param_4;\n      if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }\n      iVar32 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);\n      puVar25 = (uint *)*param_4;\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }\n      puVar17 = (uint *)param_4[2];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);\n      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);\n      puVar17 = (uint *)param_4[2];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_000448f4:\n      iVar21 = 0;\n      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n      puVar17 = param_4;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);\n      piVar28 = (int *)local_68[-1];\n      if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }\n      puVar25 = (uint *)param_4[1];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }\n      iVar30 = (int)param_7 + 1;\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);\n      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);\n      puVar25 = (uint *)param_4[1];\n      uVar27 = *(uint *)((int)puVar25 + iVar31);\n      if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }\n      if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_00044c60:\n      puVar17 = (uint *)param_4[3];\n      if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }\n      puVar25 = (uint *)((int)param_11 + iVar31);\n      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);\n      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);\n      puVar17 = (uint *)param_4[3];\n      uVar27 = *(uint *)((int)puVar17 + iVar31);\n      uVar26 = uVar27 - 1;\n      if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }\n      if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }\nLAB_0004533c:\n      puVar17 = param_4 + 1;\n      iVar30 = 0;\n      do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);\n    }" ({ "{") (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (if_statement "if (param_7 == (uint *)0xffffffff) {\n        iVar31 = -4;\n      }\n      else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" (if "if") (parenthesized_expression "(param_7 == (uint *)0xffffffff)" (( "(") (binary_expression "param_7 == (uint *)0xffffffff" (identifier "param_7") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        iVar31 = -4;\n      }" ({ "{") (expression_statement "iVar31 = -4;" (assignment_expression "iVar31 = -4" (identifier "iVar31") (= "=") (number_literal "-4")) (; ";")) (} "}")) (else_clause "else {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" (else "else") (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }\n        *puVar17 = uVar27;\n      }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" (identifier "puVar5") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" (identifier "puVar18") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 == (uint *)0x0) {\n          iVar31 = 0;\n          puVar17 = param_11;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" (if "if") (parenthesized_expression "(param_7 == (uint *)0x0)" (( "(") (binary_expression "param_7 == (uint *)0x0" (identifier "param_7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar31 = 0;\n          puVar17 = param_11;\n        }" ({ "{") (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" (identifier "iVar31") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" (identifier "puVar17") (= "=") (identifier "param_11")) (; ";")) (} "}")) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" (else "else") (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          iVar31 = (int)param_7 * 4;\n          puVar17 = param_11 + (int)param_7;\n        }" ({ "{") (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" ({ "{") (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" (identifier "puVar17") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (} "}")))) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar27")) (; ";")) (} "}")))) (expression_statement "iVar32 = (int)param_7 + 1;" (assignment_expression "iVar32 = (int)param_7 + 1" (identifier "iVar32") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32)" (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 "(puVar25,puVar25,param_4[4],iVar32)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "iVar32") () ")"))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32)" (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 "(param_4[4],param_11,param_4[4],iVar32)" (( "(") (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "iVar32") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)*param_4;" (assignment_expression "puVar25 = (uint *)*param_4" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }\nLAB_000423fc:\n          uVar27 = 0;\n        }" ({ "{") (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459fc;\n          }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000423fc;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000423fc;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000423fc;" (goto "goto") (statement_identifier "LAB_000423fc") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" (do "do") (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_000423fc;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_000423fc;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_000423fc;" (goto "goto") (statement_identifier "LAB_000423fc") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000459fc;" (goto "goto") (statement_identifier "LAB_000459fc") (; ";")) (} "}"))) (labeled_statement "LAB_000423fc:\n          uVar27 = 0;" (statement_identifier "LAB_000423fc") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_000459fc:\n          uVar27 = 1;\n        }" (else "else") (compound_statement "{\nLAB_000459fc:\n          uVar27 = 1;\n        }" ({ "{") (labeled_statement "LAB_000459fc:\n          uVar27 = 1;" (statement_identifier "LAB_000459fc") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar21 != 0) {\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar25 = (uint *)param_4[4];\n        iVar21 = *(int *)((int)puVar25 + iVar31);\n        uVar27 = *puVar25 - iVar21;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }\n        *(int *)((int)puVar25 + iVar31) = iVar21;\n      }" ({ "{") (expression_statement "puVar25 = (uint *)param_4[4];" (assignment_expression "puVar25 = (uint *)param_4[4]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "iVar21 = *(int *)((int)puVar25 + iVar31);" (assignment_expression "iVar21 = *(int *)((int)puVar25 + iVar31)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar21;" (assignment_expression "uVar27 = *puVar25 - iVar21" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar21" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar21"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }\n        else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar21)" (( "(") (binary_expression "uVar27 < (uint)-iVar21" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar21"))) () ")")) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }\nLAB_00042498:\n          iVar21 = 1;\n        }" ({ "{") (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            goto LAB_00045a18;\n          }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00042498;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }\n            }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00042498;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00042498;" (goto "goto") (statement_identifier "LAB_00042498") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);\n              }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00042498;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 + 1;\n                  puVar17 = puVar17 + 1;\n                }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_00042498;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_00042498;" (goto "goto") (statement_identifier "LAB_00042498") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00045a18;" (goto "goto") (statement_identifier "LAB_00045a18") (; ";")) (} "}"))) (labeled_statement "LAB_00042498:\n          iVar21 = 1;" (statement_identifier "LAB_00042498") (: ":") (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" (identifier "iVar21") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00045a18:\n          iVar21 = 0;\n        }" (else "else") (compound_statement "{\nLAB_00045a18:\n          iVar21 = 0;\n        }" ({ "{") (labeled_statement "LAB_00045a18:\n          iVar21 = 0;" (statement_identifier "LAB_00045a18") (: ":") (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";"))) (} "}")))) (expression_statement "*(int *)((int)puVar25 + iVar31) = iVar21;" (assignment_expression "*(int *)((int)puVar25 + iVar31) = iVar21" (pointer_expression "*(int *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "iVar21")) (; ";")) (} "}"))) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" ({ "{") (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" (identifier "puVar5") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" (identifier "puVar18") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" (identifier "puVar25") (= "=") (identifier "puVar17")) (; ";")) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" ({ "{") (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" (do "do") (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -1)" (( "(") (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)0x0)" (( "(") (binary_expression "puVar18 != (uint *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)param_11 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar31)" (( "(") (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" (identifier "puVar25") (= "=") (cast_expression "(uint *)((int)param_11 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar31)" (( "(") (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32)" (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 "(puVar17,puVar17,param_4[6],iVar32)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")) (, ",") (identifier "iVar32") () ")"))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32)" (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 "(param_4[6],param_11,param_4[6],iVar32)" (( "(") (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")) (, ",") (identifier "iVar32") () ")")))) (; ";")) (expression_statement "puVar17 = (uint *)param_4[2];" (assignment_expression "puVar17 = (uint *)param_4[2]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar17 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        uVar26 = *puVar17;\n        uVar27 = uVar27 - 1;\n        *puVar17 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" ({ "{") (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }\n        else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }\nLAB_000425b4:\n          uVar27 = 0;\n        }" ({ "{") (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_000459f4;\n          }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_000425b4;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000425b4;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000425b4;" (goto "goto") (statement_identifier "LAB_000425b4") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" ({ "{") (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" (do "do") (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_000425b4;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" ({ "{") (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar18" (identifier "param_7") (== "==") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + 1)" (( "(") (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_000425b4;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_000425b4;" (goto "goto") (statement_identifier "LAB_000425b4") (; ";"))) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000459f4;" (goto "goto") (statement_identifier "LAB_000459f4") (; ";")) (} "}"))) (labeled_statement "LAB_000425b4:\n          uVar27 = 0;" (statement_identifier "LAB_000425b4") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_000459f4:\n          uVar27 = 1;\n        }" (else "else") (compound_statement "{\nLAB_000459f4:\n          uVar27 = 1;\n        }" ({ "{") (labeled_statement "LAB_000459f4:\n          uVar27 = 1;" (statement_identifier "LAB_000459f4") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar21 != 0) {\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar17 = (uint *)param_4[6];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar21 = *piVar24;\n        uVar27 = *puVar17 - iVar21;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" ({ "{") (expression_statement "puVar17 = (uint *)param_4[6];" (assignment_expression "puVar17 = (uint *)param_4[6]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[6]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" (identifier "piVar24") (= "=") (cast_expression "(int *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" (identifier "iVar21") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "uVar27 = *puVar17 - iVar21;" (assignment_expression "uVar27 = *puVar17 - iVar21" (identifier "uVar27") (= "=") (binary_expression "*puVar17 - iVar21" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (- "-") (identifier "iVar21"))) (; ";")) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar21) {\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar21)" (( "(") (binary_expression "uVar27 < (uint)-iVar21" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar21" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar21"))) () ")")) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0004264c:\n            *piVar24 = 1;\n            goto LAB_000448f4;\n          }" ({ "{") (labeled_statement "LAB_0004264c:\n            *piVar24 = 1;" (statement_identifier "LAB_0004264c") (: ":") (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000448f4;" (goto "goto") (statement_identifier "LAB_000448f4") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_0004264c;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_0004264c;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_0004264c;" (goto "goto") (statement_identifier "LAB_0004264c") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_0004264c;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" ({ "{") (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_0004264c;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_0004264c;" (goto "goto") (statement_identifier "LAB_0004264c") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (labeled_statement "LAB_000448f4:\n      iVar21 = 0;" (statement_identifier "LAB_000448f4") (: ":") (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "local_90") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" (identifier "puVar17") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar21 < iVar20);" (do "do") (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar12 = *(int *)(*puVar17 + iVar31);\n        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar11 = iVar12 - (uVar27 + iVar32);\n        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;\n        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar32 = *(int *)((int)puVar5 + iVar31);\n        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar11 = iVar32 + uVar27 + iVar11;\n        uVar27 = iVar11 - 1;\n        if (iVar11 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar21 = iVar21 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" ({ "{") (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" (( "(") (pointer_expression "*local_90" (* "*") (identifier "local_90")) () ")")) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "local_78 * *piVar28" (identifier "local_78") (* "*") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" (identifier "puVar5") (= "=") (cast_expression "(uint *)puVar17[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar12 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar12 = *(int *)(*puVar17 + iVar31)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(*puVar17 + iVar31)" (* "*") (cast_expression "(int *)(*puVar17 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + iVar31)" (( "(") (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" (identifier "iVar32") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar11 = iVar12 - (uVar27 + iVar32);" (assignment_expression "iVar11 = iVar12 - (uVar27 + iVar32)" (identifier "iVar11") (= "=") (binary_expression "iVar12 - (uVar27 + iVar32)" (identifier "iVar12") (- "-") (parenthesized_expression "(uVar27 + iVar32)" (( "(") (binary_expression "uVar27 + iVar32" (identifier "uVar27") (+ "+") (identifier "iVar32")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;" (assignment_expression "uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" (identifier "uVar27") (= "=") (binary_expression "iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12" (binary_expression "iVar11 >> 0x1f" (identifier "iVar11") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar32) - iVar12" (parenthesized_expression "(uVar27 + iVar32)" (( "(") (binary_expression "uVar27 + iVar32" (identifier "uVar27") (+ "+") (identifier "iVar32")) () ")")) (- "-") (identifier "iVar12")))) (; ";")) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (binary_expression "iVar11 + uVar27" (identifier "iVar11") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" ({ "{") (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_00044910;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" ({ "{") (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_00044910;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00044910;" (goto "goto") (statement_identifier "LAB_00044910") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" (else "else") (compound_statement "{\nLAB_00044910:\n          puVar5 = (uint *)*puVar17;\n        }" ({ "{") (labeled_statement "LAB_00044910:\n          puVar5 = (uint *)*puVar17;" (statement_identifier "LAB_00044910") (: ":") (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar32 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar32 = *(int *)((int)puVar5 + iVar31)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar11 = iVar32 + uVar27 + iVar11;" (assignment_expression "iVar11 = iVar32 + uVar27 + iVar11" (identifier "iVar11") (= "=") (binary_expression "iVar32 + uVar27 + iVar11" (binary_expression "iVar32 + uVar27" (identifier "iVar32") (+ "+") (identifier "uVar27")) (+ "+") (identifier "iVar11"))) (; ";")) (expression_statement "uVar27 = iVar11 - 1;" (assignment_expression "uVar27 = iVar11 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar11 - 1" (identifier "iVar11") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar11 == 0) {\n          uVar27 = 0;\n        }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar27 = 0;\n        }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar11 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (binary_expression "iVar11 - uVar27" (identifier "iVar11") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" ({ "{") (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" (do "do") (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" ({ "{") (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 2" (identifier "piVar28") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 4" (identifier "puVar17") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 < iVar20)" (( "(") (binary_expression "iVar21 < iVar20" (identifier "iVar21") (< "<") (identifier "iVar20")) () ")")) (; ";")) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" (identifier "piVar28") (= "=") (cast_expression "(int *)local_68[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-1]" (identifier "local_68") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (if_statement "if (iVar20 != 2) {\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" (if "if") (parenthesized_expression "(iVar20 != 2)" (( "(") (binary_expression "iVar20 != 2" (identifier "iVar20") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n        goto LAB_00044f40;\n      }" ({ "{") (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" (identifier "local_6c") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x1610" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x1610")) () ")")))) (; ";")) (goto_statement "goto LAB_00044f40;" (goto "goto") (statement_identifier "LAB_00044f40") (; ";")) (} "}"))) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar27 = *puVar25;\n        puVar5 = param_7;\n        puVar18 = param_11;\n        puVar17 = puVar25;\n        if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }\n      }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" (identifier "puVar5") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" (identifier "puVar18") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 == (uint *)0x0) {\n          *param_11 = uVar27;\n        }\n        else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" (if "if") (parenthesized_expression "(param_7 == (uint *)0x0)" (( "(") (binary_expression "param_7 == (uint *)0x0" (identifier "param_7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *param_11 = uVar27;\n        }" ({ "{") (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "uVar27")) (; ";")) (} "}")) (else_clause "else {\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" (else "else") (compound_statement "{\n          do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);\n          *(uint *)((int)param_11 + iVar31) = uVar27;\n        }" ({ "{") (do_statement "do {\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n            *puVar18 = uVar27;\n            puVar5 = (uint *)((int)puVar5 + -1);\n            uVar27 = puVar17[1];\n            puVar18 = puVar18 + 1;\n            puVar17 = puVar17 + 1;\n          }" ({ "{") (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(uint *)((int)param_11 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar31)" (* "*") (cast_expression "(uint *)((int)param_11 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar31)" (( "(") (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar30 = (int)param_7 + 1;" (assignment_expression "iVar30 = (int)param_7 + 1" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30)" (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 "(puVar25,puVar25,param_4[5],iVar30)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "iVar30") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30)" (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 "(param_4[5],param_11,param_4[5],iVar30)" (( "(") (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)param_4[1];" (assignment_expression "puVar25 = (uint *)param_4[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar31)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (if_statement "if (1 < uVar27) {\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        uVar26 = *puVar25;\n        uVar27 = uVar27 - 1;\n        *puVar25 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar25 + iVar31) = uVar27;\n      }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }\n        else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }\nLAB_00044bb8:\n          uVar27 = 0;\n        }" ({ "{") (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00044e0c;\n          }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044bb8;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }\n            }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044bb8;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044bb8;" (goto "goto") (statement_identifier "LAB_00044bb8") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar5 = (uint *)0x3;\n                puVar17 = puVar25 + 3;\n                do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);\n              }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar25 + 3;" (assignment_expression "puVar17 = puVar25 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                } while (uVar27 == 0);" (do "do") (compound_statement "{\n                  if (param_7 == puVar5) goto LAB_00044bb8;\n                  uVar27 = *puVar17;\n                  puVar5 = (uint *)((int)puVar5 + 1);\n                  *puVar17 = uVar27 - 1;\n                  puVar17 = puVar17 + 1;\n                }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_00044bb8;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_00044bb8;" (goto "goto") (statement_identifier "LAB_00044bb8") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00044e0c;" (goto "goto") (statement_identifier "LAB_00044e0c") (; ";")) (} "}"))) (labeled_statement "LAB_00044bb8:\n          uVar27 = 0;" (statement_identifier "LAB_00044bb8") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00044e0c:\n          uVar27 = 1;\n        }" (else "else") (compound_statement "{\nLAB_00044e0c:\n          uVar27 = 1;\n        }" ({ "{") (labeled_statement "LAB_00044e0c:\n          uVar27 = 1;" (statement_identifier "LAB_00044e0c") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar25 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar6 != 0) {\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar25 = (uint *)param_4[5];\n        piVar24 = (int *)((int)puVar25 + iVar31);\n        iVar6 = *piVar24;\n        uVar27 = *puVar25 - iVar6;\n        *puVar25 = uVar27;\n        if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" ({ "{") (expression_statement "puVar25 = (uint *)param_4[5];" (assignment_expression "puVar25 = (uint *)param_4[5]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_4[5]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "piVar24 = (int *)((int)puVar25 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar25 + iVar31)" (identifier "piVar24") (= "=") (cast_expression "(int *)((int)puVar25 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar31)" (( "(") (binary_expression "(int)puVar25 + iVar31" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "iVar6 = *piVar24;" (assignment_expression "iVar6 = *piVar24" (identifier "iVar6") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }\n          uVar27 = puVar25[1];\n          puVar25[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00044c54:\n            *piVar24 = 1;\n            goto LAB_00044c60;\n          }" ({ "{") (labeled_statement "LAB_00044c54:\n            *piVar24 = 1;" (statement_identifier "LAB_00044c54") (: ":") (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_00044c60;" (goto "goto") (statement_identifier "LAB_00044c60") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044c54;\n            uVar27 = puVar25[2];\n            puVar25[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044c54;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044c54;" (goto "goto") (statement_identifier "LAB_00044c54") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar17 = (uint *)0x3;\n              puVar25 = puVar25 + 3;\n              do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);\n            }" ({ "{") (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" (identifier "puVar17") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                if (param_7 == puVar17) goto LAB_00044c54;\n                uVar27 = *puVar25;\n                puVar17 = (uint *)((int)puVar17 + 1);\n                *puVar25 = uVar27 + 1;\n                puVar25 = puVar25 + 1;\n              }" ({ "{") (if_statement "if (param_7 == puVar17) goto LAB_00044c54;" (if "if") (parenthesized_expression "(param_7 == puVar17)" (( "(") (binary_expression "param_7 == puVar17" (identifier "param_7") (== "==") (identifier "puVar17")) () ")")) (goto_statement "goto LAB_00044c54;" (goto "goto") (statement_identifier "LAB_00044c54") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar17 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + 1)" (( "(") (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (labeled_statement "LAB_00044c60:\n      puVar17 = (uint *)param_4[3];" (statement_identifier "LAB_00044c60") (: ":") (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) (; ";"))) (if_statement "if (param_7 != (uint *)0xffffffff) {\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar27 = *puVar17;\n        puVar5 = param_11;\n        puVar18 = param_7;\n        puVar25 = puVar17;\n        if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }\n        *puVar5 = uVar27;\n      }" ({ "{") (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" (identifier "puVar5") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" (identifier "puVar18") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" (identifier "puVar25") (= "=") (identifier "puVar17")) (; ";")) (if_statement "if (param_7 != (uint *)0x0) {\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);\n          puVar5 = (uint *)((int)param_11 + iVar31);\n        }" ({ "{") (do_statement "do {\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          } while (puVar18 != (uint *)0x0);" (do "do") (compound_statement "{\n            *puVar5 = uVar27;\n            puVar18 = (uint *)((int)puVar18 + -1);\n            uVar27 = puVar25[1];\n            puVar5 = puVar5 + 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -1)" (( "(") (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)0x0)" (( "(") (binary_expression "puVar18 != (uint *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar31)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)param_11 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar31)" (( "(") (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (expression_statement "puVar25 = (uint *)((int)param_11 + iVar31);" (assignment_expression "puVar25 = (uint *)((int)param_11 + iVar31)" (identifier "puVar25") (= "=") (cast_expression "(uint *)((int)param_11 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar31)" (( "(") (binary_expression "(int)param_11 + iVar31" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30)" (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 "(puVar17,puVar17,param_4[7],iVar30)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "iVar30") () ")"))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30)" (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 "(param_4[7],param_11,param_4[7],iVar30)" (( "(") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "puVar17 = (uint *)param_4[3];" (assignment_expression "puVar17 = (uint *)param_4[3]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar17 + iVar31);" (assignment_expression "uVar27 = *(uint *)((int)puVar17 + iVar31)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar17 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" (identifier "uVar26") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (1 < uVar27) {\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        uVar27 = *puVar17;\n        *puVar17 = uVar27 - uVar26;\n        if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }\n        *(uint *)((int)puVar17 + iVar31) = uVar27;\n      }" ({ "{") (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 - uVar26;" (assignment_expression "*puVar17 = uVar27 - uVar26" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - uVar26" (identifier "uVar27") (- "-") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 < uVar26) {\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }\n        else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" (if "if") (parenthesized_expression "(uVar27 < uVar26)" (( "(") (binary_expression "uVar27 < uVar26" (identifier "uVar27") (< "<") (identifier "uVar26")) () ")")) (compound_statement "{\n          if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }\nLAB_00044d6c:\n          uVar27 = 0;\n        }" ({ "{") (if_statement "if (1 < (int)param_7) {\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            uVar27 = puVar17[1];\n            puVar17[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }\n            goto LAB_00045a04;\n          }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_7 == (uint *)0x2) goto LAB_00044d6c;\n              uVar27 = puVar17[2];\n              puVar17[2] = uVar27 - 1;\n              if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }\n            }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044d6c;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044d6c;" (goto "goto") (statement_identifier "LAB_00044d6c") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 - 1;" (assignment_expression "puVar17[2] = uVar27 - 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar18 = (uint *)0x3;\n                puVar5 = puVar17 + 3;\n                do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);\n              }" ({ "{") (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar5 = puVar17 + 3;" (assignment_expression "puVar5 = puVar17 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                } while (uVar27 == 0);" (do "do") (compound_statement "{\n                  bVar1 = param_7 == puVar18;\n                  puVar18 = (uint *)((int)puVar18 + 1);\n                  if (bVar1) goto LAB_00044d6c;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 - 1;\n                  puVar5 = puVar5 + 1;\n                }" ({ "{") (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar18" (identifier "param_7") (== "==") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + 1)" (( "(") (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_00044d6c;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00044d6c;" (goto "goto") (statement_identifier "LAB_00044d6c") (; ";"))) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00045a04;" (goto "goto") (statement_identifier "LAB_00045a04") (; ";")) (} "}"))) (labeled_statement "LAB_00044d6c:\n          uVar27 = 0;" (statement_identifier "LAB_00044d6c") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00045a04:\n          uVar27 = 1;\n        }" (else "else") (compound_statement "{\nLAB_00045a04:\n          uVar27 = 1;\n        }" ({ "{") (labeled_statement "LAB_00045a04:\n          uVar27 = 1;" (statement_identifier "LAB_00045a04") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar17 + iVar31) = uVar27;" (assignment_expression "*(uint *)((int)puVar17 + iVar31) = uVar27" (pointer_expression "*(uint *)((int)puVar17 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar30 != 0) {\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" (if "if") (parenthesized_expression "(iVar30 != 0)" (( "(") (binary_expression "iVar30 != 0" (identifier "iVar30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar17 = (uint *)param_4[7];\n        piVar24 = (int *)((int)puVar17 + iVar31);\n        iVar30 = *piVar24;\n        uVar27 = *puVar17 - iVar30;\n        *puVar17 = uVar27;\n        if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }\n        *piVar24 = 0;\n      }" ({ "{") (expression_statement "puVar17 = (uint *)param_4[7];" (assignment_expression "puVar17 = (uint *)param_4[7]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_4[7]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "piVar24 = (int *)((int)puVar17 + iVar31);" (assignment_expression "piVar24 = (int *)((int)puVar17 + iVar31)" (identifier "piVar24") (= "=") (cast_expression "(int *)((int)puVar17 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + iVar31)" (( "(") (binary_expression "(int)puVar17 + iVar31" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "iVar30 = *piVar24;" (assignment_expression "iVar30 = *piVar24" (identifier "iVar30") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "uVar27 = *puVar17 - iVar30;" (assignment_expression "uVar27 = *puVar17 - iVar30" (identifier "uVar27") (= "=") (binary_expression "*puVar17 - iVar30" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (- "-") (identifier "iVar30"))) (; ";")) (expression_statement "*puVar17 = uVar27;" (assignment_expression "*puVar17 = uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar30) {\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar30)" (( "(") (binary_expression "uVar27 < (uint)-iVar30" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar30" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar30"))) () ")")) (compound_statement "{\n          if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }\n          uVar27 = puVar17[1];\n          puVar17[1] = uVar27 + 1;\n          if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }\n        }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00044e00:\n            *piVar24 = 1;\n            goto LAB_0004533c;\n          }" ({ "{") (labeled_statement "LAB_00044e00:\n            *piVar24 = 1;" (statement_identifier "LAB_00044e00") (: ":") (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_0004533c;" (goto "goto") (statement_identifier "LAB_0004533c") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 + 1;" (assignment_expression "puVar17[1] = uVar27 + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 == (uint *)0x2) goto LAB_00044e00;\n            uVar27 = puVar17[2];\n            puVar17[2] = uVar27 + 1;\n            if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }\n          }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044e00;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044e00;" (goto "goto") (statement_identifier "LAB_00044e00") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar17[2] = uVar27 + 1;" (assignment_expression "puVar17[2] = uVar27 + 1" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar5 = (uint *)0x3;\n              puVar17 = puVar17 + 3;\n              do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);\n            }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                bVar1 = param_7 == puVar5;\n                puVar5 = (uint *)((int)puVar5 + 1);\n                if (bVar1) goto LAB_00044e00;\n                uVar27 = *puVar17;\n                *puVar17 = uVar27 + 1;\n                puVar17 = puVar17 + 1;\n              }" ({ "{") (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_00044e00;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00044e00;" (goto "goto") (statement_identifier "LAB_00044e00") (; ";"))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (labeled_statement "LAB_0004533c:\n      puVar17 = param_4 + 1;" (statement_identifier "LAB_0004533c") (: ":") (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" (identifier "puVar17") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" (identifier "iVar30") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      } while (iVar30 < iVar20);" (do "do") (compound_statement "{\n        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);\n        puVar5 = (uint *)puVar17[2];\n        uVar27 = *puVar25;\n        iVar32 = *(int *)(*puVar17 + iVar31);\n        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n        iVar21 = iVar32 - (uVar27 + iVar6);\n        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;\n        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar27 + uVar26;\n        if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }\n        uVar27 = *puVar25;\n        iVar6 = *(int *)((int)puVar5 + iVar31);\n        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n        iVar21 = iVar6 + uVar27 + iVar21;\n        uVar27 = iVar21 - 1;\n        if (iVar21 == 0) {\n          uVar27 = 0;\n        }\n        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;\n        uVar26 = *puVar5;\n        *puVar5 = uVar26 - uVar27;\n        if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }\n        iVar30 = iVar30 + 1;\n        piVar28 = piVar28 + 2;\n        puVar17 = puVar17 + 4;\n      }" ({ "{") (expression_statement "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);" (call_expression "(*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7)" (parenthesized_expression "(*local_90)" (( "(") (pointer_expression "*local_90" (* "*") (identifier "local_90")) () ")")) (argument_list "(param_11,puVar17[2],local_78 * *piVar28,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "local_78 * *piVar28" (identifier "local_78") (* "*") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar5 = (uint *)puVar17[2];" (assignment_expression "puVar5 = (uint *)puVar17[2]" (identifier "puVar5") (= "=") (cast_expression "(uint *)puVar17[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar31);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar31)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(*puVar17 + iVar31)" (* "*") (cast_expression "(int *)(*puVar17 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + iVar31)" (( "(") (binary_expression "*puVar17 + iVar31" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar6);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar6)" (identifier "iVar21") (= "=") (binary_expression "iVar32 - (uVar27 + iVar6)" (identifier "iVar32") (- "-") (parenthesized_expression "(uVar27 + iVar6)" (( "(") (binary_expression "uVar27 + iVar6" (identifier "uVar27") (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" (identifier "uVar27") (= "=") (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32" (binary_expression "iVar21 >> 0x1f" (identifier "iVar21") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar6) - iVar32" (parenthesized_expression "(uVar27 + iVar6)" (( "(") (binary_expression "uVar27 + iVar6" (identifier "uVar27") (+ "+") (identifier "iVar6")) () ")")) (- "-") (identifier "iVar32")))) (; ";")) (expression_statement "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(uint *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (binary_expression "iVar21 + uVar27" (identifier "iVar21") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }\n        else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);\n          puVar5 = (uint *)*puVar17;\n        }" ({ "{") (do_statement "do {\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n            uVar27 = puVar5[1] + 1;\n            puVar5[1] = uVar27;\n            if (uVar27 != 0) goto LAB_0004534c;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 + 1;\n          }" ({ "{") (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_0004534c;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004534c;" (goto "goto") (statement_identifier "LAB_0004534c") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" (else "else") (compound_statement "{\nLAB_0004534c:\n          puVar5 = (uint *)*puVar17;\n        }" ({ "{") (labeled_statement "LAB_0004534c:\n          puVar5 = (uint *)*puVar17;" (statement_identifier "LAB_0004534c") (: ":") (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar6 = *(int *)((int)puVar5 + iVar31);" (assignment_expression "iVar6 = *(int *)((int)puVar5 + iVar31)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")"))))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar6 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar6 + uVar27 + iVar21" (identifier "iVar21") (= "=") (binary_expression "iVar6 + uVar27 + iVar21" (binary_expression "iVar6 + uVar27" (identifier "iVar6") (+ "+") (identifier "uVar27")) (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar21 - 1" (identifier "iVar21") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n          uVar27 = 0;\n        }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar27 = 0;\n        }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar31) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar31)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar31)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar31)" (( "(") (binary_expression "(int)puVar5 + iVar31" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar31")) () ")")))) (= "=") (binary_expression "iVar21 - uVar27" (identifier "iVar21") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n          do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);\n        }" ({ "{") (do_statement "do {\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          } while (uVar27 == 0);" (do "do") (compound_statement "{\n            uVar27 = puVar5[1];\n            puVar5[1] = uVar27 - 1;\n            if (uVar27 != 0) break;\n            puVar5 = puVar5 + 2;\n            uVar27 = *puVar5;\n            *puVar5 = uVar27 - 1;\n          }" ({ "{") (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 2" (identifier "piVar28") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 4" (identifier "puVar17") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar30 < iVar20)" (( "(") (binary_expression "iVar30 < iVar20" (identifier "iVar30") (< "<") (identifier "iVar20")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" (else "else") (compound_statement "{\n      piVar24 = local_68 + -3;\n      piVar29 = (int *)local_68[-2];\n      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);\n      iVar31 = param_9 << 4;\n      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 2;\n      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }\n      iVar31 = (int)param_7 * 4;\n      if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }\n      piVar28 = (int *)local_68[-1];\nLAB_00044f40:\n      local_5c = local_68 + -3;\n      puVar17 = param_4 + 1;\n      iVar31 = param_9 << 4;\n      piVar24 = (int *)local_68[-2];\n      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);\n      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);\n      puVar25 = param_4 + 3;\n      if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }\n      if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }\n    }" ({ "{") (expression_statement "piVar24 = local_68 + -3;" (assignment_expression "piVar24 = local_68 + -3" (identifier "piVar24") (= "=") (binary_expression "local_68 + -3" (identifier "local_68") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" (identifier "piVar29") (= "=") (cast_expression "(int *)local_68[-2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-2]" (identifier "local_68") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "local_6c = (code *)(PTR_LAB_0009d078 + 0x1610)" (identifier "local_6c") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x1610" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x1610")) () ")")))) (; ";")) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" (identifier "iVar31") (= "=") (binary_expression "param_9 << 4" (identifier "param_9") (<< "<<") (number_literal "4"))) (; ";")) (expression_statement "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" (identifier "FUN_00041610") (argument_list "(param_4,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (identifier "param_4") (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "puVar25 = param_4 + 2;" (assignment_expression "puVar25 = param_4 + 2" (identifier "puVar25") (= "=") (binary_expression "param_4 + 2" (identifier "param_4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" (if "if") (parenthesized_expression "(iVar30 < 1)" (( "(") (binary_expression "iVar30 < 1" (identifier "iVar30") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n      }" ({ "{") (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 6" (identifier "param_4") (+ "+") (number_literal "6")) (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" (else "else") (compound_statement "{\n        piVar19 = piVar29 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_4;\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);\n      }" ({ "{") (expression_statement "piVar19 = piVar29 + iVar30 * 2;" (assignment_expression "piVar19 = piVar29 + iVar30 * 2" (identifier "piVar19") (= "=") (binary_expression "piVar29 + iVar30 * 2" (identifier "piVar29") (+ "+") (binary_expression "iVar30 * 2" (identifier "iVar30") (* "*") (number_literal "2")))) (; ";")) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" (identifier "puVar5") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" (identifier "puVar17") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar19);" (do "do") (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar17 = puVar17 + 8;\n        }" ({ "{") (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_11,puVar17[4],iVar6 * *piVar29,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "iVar6 * *piVar29" (identifier "iVar6") (* "*") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" (identifier "puVar18") (= "=") (cast_expression "(uint *)puVar17[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" (identifier "iVar32") (= "=") (binary_expression "iVar11 - (uVar27 + iVar21)" (identifier "iVar11") (- "-") (parenthesized_expression "(uVar27 + iVar21)" (( "(") (binary_expression "uVar27 + iVar21" (identifier "uVar27") (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (identifier "uVar27") (= "=") (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" (identifier "iVar32") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" (( "(") (binary_expression "uVar27 + iVar21" (identifier "uVar27") (+ "+") (identifier "iVar21")) () ")")) (- "-") (identifier "iVar11")))) (; ";")) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar32 + uVar27" (identifier "iVar32") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004333c;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_0004333c;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004333c;" (goto "goto") (statement_identifier "LAB_0004333c") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" (else "else") (compound_statement "{\nLAB_0004333c:\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (labeled_statement "LAB_0004333c:\n            puVar18 = (uint *)*puVar17;" (statement_identifier "LAB_0004333c") (: ":") (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (identifier "puVar18") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" (identifier "iVar21") (= "=") (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar21 - 1" (identifier "iVar21") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar21 - uVar27" (identifier "iVar21") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 2" (identifier "piVar29") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 8" (identifier "puVar17") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar29 != piVar19)" (( "(") (binary_expression "piVar29 != piVar19" (identifier "piVar29") (!= "!=") (identifier "piVar19")) () ")")) (; ";")) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" (identifier "piVar29") (= "=") (cast_expression "(int *)local_68[-2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-2]" (identifier "local_68") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 6" (identifier "param_4") (+ "+") (number_literal "6")) (, ",") (identifier "iVar30") (, ",") (identifier "piVar24") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" (identifier "piVar24") (= "=") (binary_expression "piVar29 + iVar30 * 2" (identifier "piVar29") (+ "+") (binary_expression "iVar30 * 2" (identifier "iVar30") (* "*") (number_literal "2")))) (; ";")) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar29 != piVar24);" (do "do") (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar21 = iVar32 - (uVar27 + iVar31);\n          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n          puVar17[(int)param_7] = iVar21 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar31 = uVar27 + uVar26 + iVar31;\n          uVar27 = iVar31 - 1;\n          if (iVar31 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar31 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" ({ "{") (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar25[4]" (identifier "puVar25") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "iVar6 * *piVar29" (identifier "iVar6") (* "*") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" (identifier "puVar17") (= "=") (cast_expression "(uint *)puVar25[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar25[4]" (identifier "puVar25") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar32 = *(int *)(*puVar25 + (int)param_7 * 4)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" (identifier "iVar31") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" (identifier "iVar21") (= "=") (binary_expression "iVar32 - (uVar27 + iVar31)" (identifier "iVar32") (- "-") (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (identifier "uVar27") (= "=") (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" (identifier "iVar21") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")) (- "-") (identifier "iVar32")))) (; ";")) (expression_statement "puVar17[(int)param_7] = iVar21 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar21 + uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar21 + uVar27" (identifier "iVar21") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_0004478c;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_0004478c;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004478c;" (goto "goto") (statement_identifier "LAB_0004478c") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";")) (} "}")) (else_clause "else {\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" (else "else") (compound_statement "{\nLAB_0004478c:\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (labeled_statement "LAB_0004478c:\n            puVar17 = (uint *)*puVar25;" (statement_identifier "LAB_0004478c") (: ":") (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" (identifier "iVar31") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar31 = uVar27 + uVar26 + iVar31;" (assignment_expression "iVar31 = uVar27 + uVar26 + iVar31" (identifier "iVar31") (= "=") (binary_expression "uVar27 + uVar26 + iVar31" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar31"))) (; ";")) (expression_statement "uVar27 = iVar31 - 1;" (assignment_expression "uVar27 = iVar31 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar31 - 1" (identifier "iVar31") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar31 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar31 == 0)" (( "(") (binary_expression "iVar31 == 0" (identifier "iVar31") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar17[(int)param_7] = iVar31 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 - uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar31 - uVar27" (identifier "iVar31") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 2" (identifier "piVar29") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 8" (identifier "puVar25") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar29 != piVar24)" (( "(") (binary_expression "piVar29 != piVar24" (identifier "piVar29") (!= "!=") (identifier "piVar24")) () ")")) (; ";")) (} "}")))) (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (0 < iVar20) {\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" (if "if") (parenthesized_expression "(0 < iVar20)" (( "(") (binary_expression "0 < iVar20" (number_literal "0") (< "<") (identifier "iVar20")) () ")")) (compound_statement "{\n        puVar25 = param_11 + (int)param_7;\n        goto LAB_000448f4;\n      }" ({ "{") (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" (identifier "puVar25") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (goto_statement "goto LAB_000448f4;" (goto "goto") (statement_identifier "LAB_000448f4") (; ";")) (} "}"))) (expression_statement "piVar28 = (int *)local_68[-1];" (assignment_expression "piVar28 = (int *)local_68[-1]" (identifier "piVar28") (= "=") (cast_expression "(int *)local_68[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-1]" (identifier "local_68") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (labeled_statement "LAB_00044f40:\n      local_5c = local_68 + -3;" (statement_identifier "LAB_00044f40") (: ":") (expression_statement "local_5c = local_68 + -3;" (assignment_expression "local_5c = local_68 + -3" (identifier "local_5c") (= "=") (binary_expression "local_68 + -3" (identifier "local_68") (+ "+") (number_literal "-3"))) (; ";"))) (expression_statement "puVar17 = param_4 + 1;" (assignment_expression "puVar17 = param_4 + 1" (identifier "puVar17") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar31 = param_9 << 4;" (assignment_expression "iVar31 = param_9 << 4" (identifier "iVar31") (= "=") (binary_expression "param_9 << 4" (identifier "param_9") (<< "<<") (number_literal "4"))) (; ";")) (expression_statement "piVar24 = (int *)local_68[-2];" (assignment_expression "piVar24 = (int *)local_68[-2]" (identifier "piVar24") (= "=") (cast_expression "(int *)local_68[-2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-2]" (identifier "local_68") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (identifier "puVar17") (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 5" (identifier "param_4") (+ "+") (number_literal "5")) (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "puVar25 = param_4 + 3;" (assignment_expression "puVar25 = param_4 + 3" (identifier "puVar25") (= "=") (binary_expression "param_4 + 3" (identifier "param_4") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (iVar30 < 1) {\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" (if "if") (parenthesized_expression "(iVar30 < 1)" (( "(") (binary_expression "iVar30 < 1" (identifier "iVar30") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n      }" ({ "{") (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 7" (identifier "param_4") (+ "+") (number_literal "7")) (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" (else "else") (compound_statement "{\n        piVar29 = piVar24 + iVar30 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);\n        do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);\n        piVar29 = (int *)local_68[-2];\n        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);\n        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);\n        piVar24 = piVar29 + iVar30 * 2;\n        do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);\n      }" ({ "{") (expression_statement "piVar29 = piVar24 + iVar30 * 2;" (assignment_expression "piVar29 = piVar24 + iVar30 * 2" (identifier "piVar29") (= "=") (binary_expression "piVar24 + iVar30 * 2" (identifier "piVar24") (+ "+") (binary_expression "iVar30 * 2" (identifier "iVar30") (* "*") (number_literal "2")))) (; ";")) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" (identifier "puVar5") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (do_statement "do {\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        } while (piVar29 != piVar24);" (do "do") (compound_statement "{\n          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[4];\n          uVar27 = *puVar5;\n          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar32 = iVar11 - (uVar27 + iVar21);\n          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;\n          puVar18[(int)param_7] = iVar32 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar21 = uVar27 + uVar26 + iVar21;\n          uVar27 = iVar21 - 1;\n          if (iVar21 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar21 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 8;\n        }" ({ "{") (expression_statement "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);" (call_expression "(*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_11,puVar17[4],iVar6 * *piVar24,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "iVar6 * *piVar24" (identifier "iVar6") (* "*") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar18 = (uint *)puVar17[4];" (assignment_expression "puVar18 = (uint *)puVar17[4]" (identifier "puVar18") (= "=") (cast_expression "(uint *)puVar17[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar11 = *(int *)(*puVar17 + (int)param_7 * 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar32 = iVar11 - (uVar27 + iVar21);" (assignment_expression "iVar32 = iVar11 - (uVar27 + iVar21)" (identifier "iVar32") (= "=") (binary_expression "iVar11 - (uVar27 + iVar21)" (identifier "iVar11") (- "-") (parenthesized_expression "(uVar27 + iVar21)" (( "(") (binary_expression "uVar27 + iVar21" (identifier "uVar27") (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;" (assignment_expression "uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (identifier "uVar27") (= "=") (binary_expression "iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11" (binary_expression "iVar32 >> 0x1f" (identifier "iVar32") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar21) - iVar11" (parenthesized_expression "(uVar27 + iVar21)" (( "(") (binary_expression "uVar27 + iVar21" (identifier "uVar27") (+ "+") (identifier "iVar21")) () ")")) (- "-") (identifier "iVar11")))) (; ";")) (expression_statement "puVar18[(int)param_7] = iVar32 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar32 + uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar32 + uVar27" (identifier "iVar32") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00044fe8;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_00044fe8;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00044fe8;" (goto "goto") (statement_identifier "LAB_00044fe8") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" (else "else") (compound_statement "{\nLAB_00044fe8:\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (labeled_statement "LAB_00044fe8:\n            puVar18 = (uint *)*puVar17;" (statement_identifier "LAB_00044fe8") (: ":") (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (identifier "puVar18") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = uVar27 + uVar26 + iVar21;" (assignment_expression "iVar21 = uVar27 + uVar26 + iVar21" (identifier "iVar21") (= "=") (binary_expression "uVar27 + uVar26 + iVar21" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar21 - 1" (identifier "iVar21") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar18[(int)param_7] = iVar21 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar21 - uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar21 - uVar27" (identifier "iVar21") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" (identifier "piVar24") (= "=") (binary_expression "piVar24 + 2" (identifier "piVar24") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 8;" (assignment_expression "puVar17 = puVar17 + 8" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 8" (identifier "puVar17") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar29 != piVar24)" (( "(") (binary_expression "piVar29 != piVar24" (identifier "piVar29") (!= "!=") (identifier "piVar24")) () ")")) (; ";")) (expression_statement "piVar29 = (int *)local_68[-2];" (assignment_expression "piVar29 = (int *)local_68[-2]" (identifier "piVar29") (= "=") (cast_expression "(int *)local_68[-2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-2]" (identifier "local_68") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);" (call_expression "(*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (parenthesized_expression "(*local_6c)" (( "(") (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) () ")")) (argument_list "(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11)" (( "(") (binary_expression "param_4 + 7" (identifier "param_4") (+ "+") (number_literal "7")) (, ",") (identifier "iVar30") (, ",") (identifier "local_5c") (, ",") (identifier "iVar31") (, ",") (identifier "param_7") (, ",") (number_literal "8") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "piVar24 = piVar29 + iVar30 * 2;" (assignment_expression "piVar24 = piVar29 + iVar30 * 2" (identifier "piVar24") (= "=") (binary_expression "piVar29 + iVar30 * 2" (identifier "piVar29") (+ "+") (binary_expression "iVar30 * 2" (identifier "iVar30") (* "*") (number_literal "2")))) (; ";")) (do_statement "do {\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        } while (piVar24 != piVar29);" (do "do") (compound_statement "{\n          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);\n          puVar17 = (uint *)puVar25[4];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar30);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;\n          puVar17[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar29 = piVar29 + 2;\n          puVar25 = puVar25 + 8;\n        }" ({ "{") (expression_statement "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);" (call_expression "(*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_11,puVar25[4],iVar6 * *piVar29,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar25[4]" (identifier "puVar25") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "iVar6 * *piVar29" (identifier "iVar6") (* "*") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar17 = (uint *)puVar25[4];" (assignment_expression "puVar17 = (uint *)puVar25[4]" (identifier "puVar17") (= "=") (cast_expression "(uint *)puVar25[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar25[4]" (identifier "puVar25") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar25 + (int)param_7 * 4)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar30);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar30)" (identifier "iVar31") (= "=") (binary_expression "iVar21 - (uVar27 + iVar30)" (identifier "iVar21") (- "-") (parenthesized_expression "(uVar27 + iVar30)" (( "(") (binary_expression "uVar27 + iVar30" (identifier "uVar27") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" (identifier "uVar27") (= "=") (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21" (binary_expression "iVar31 >> 0x1f" (identifier "iVar31") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar30) - iVar21" (parenthesized_expression "(uVar27 + iVar30)" (( "(") (binary_expression "uVar27 + iVar30" (identifier "uVar27") (+ "+") (identifier "iVar30")) () ")")) (- "-") (identifier "iVar21")))) (; ";")) (expression_statement "puVar17[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar31 + uVar27" (identifier "iVar31") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000451c8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_000451c8;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000451c8;" (goto "goto") (statement_identifier "LAB_000451c8") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";")) (} "}")) (else_clause "else {\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" (else "else") (compound_statement "{\nLAB_000451c8:\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (labeled_statement "LAB_000451c8:\n            puVar17 = (uint *)*puVar25;" (statement_identifier "LAB_000451c8") (: ":") (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" (identifier "iVar30") (= "=") (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar30 - 1" (identifier "iVar30") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar30 - uVar27" (identifier "iVar30") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar29 = piVar29 + 2;" (assignment_expression "piVar29 = piVar29 + 2" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 2" (identifier "piVar29") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar25 = puVar25 + 8;" (assignment_expression "puVar25 = puVar25 + 8" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 8" (identifier "puVar25") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar24 != piVar29)" (( "(") (binary_expression "piVar24 != piVar29" (identifier "piVar24") (!= "!=") (identifier "piVar29")) () ")")) (; ";")) (} "}")))) (if_statement "if (0 < iVar20) {\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" (if "if") (parenthesized_expression "(0 < iVar20)" (( "(") (binary_expression "0 < iVar20" (number_literal "0") (< "<") (identifier "iVar20")) () ")")) (compound_statement "{\n        iVar31 = (int)param_7 * 4;\n        puVar25 = param_11 + (int)param_7;\n        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n        goto LAB_0004533c;\n      }" ({ "{") (expression_statement "iVar31 = (int)param_7 * 4;" (assignment_expression "iVar31 = (int)param_7 * 4" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" (identifier "puVar25") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "local_90") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (goto_statement "goto LAB_0004533c;" (goto "goto") (statement_identifier "LAB_0004533c") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (local_7c < 1) {\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" (if "if") (parenthesized_expression "(local_7c < 1)" (( "(") (binary_expression "local_7c < 1" (identifier "local_7c") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }\n      goto LAB_000427e4;\n    }" ({ "{") (if_statement "if (param_12 == 0) {\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" (if "if") (parenthesized_expression "(param_12 == 0)" (( "(") (binary_expression "param_12 == 0" (identifier "param_12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        piVar33 = (int *)*local_68;\n        goto LAB_0004555c;\n      }" ({ "{") (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" (identifier "piVar33") (= "=") (cast_expression "(int *)*local_68" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_68" (* "*") (identifier "local_68")))) (; ";")) (goto_statement "goto LAB_0004555c;" (goto "goto") (statement_identifier "LAB_0004555c") (; ";")) (} "}"))) (goto_statement "goto LAB_000427e4;" (goto "goto") (statement_identifier "LAB_000427e4") (; ";")) (} "}"))) (expression_statement "puVar25 = param_11 + (int)param_7;" (assignment_expression "puVar25 = param_11 + (int)param_7" (identifier "puVar25") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (} "}")))) (labeled_statement "LAB_000437b8:\n  iVar6 = 0;" (statement_identifier "LAB_000437b8") (: ":") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "local_90") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (expression_statement "puVar17 = param_4;" (assignment_expression "puVar17 = param_4" (identifier "puVar17") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  } while (iVar6 < local_7c);" (do "do") (compound_statement "{\n    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);\n    puVar5 = (uint *)puVar17[1];\n    uVar27 = *puVar25;\n    iVar32 = *(int *)(*puVar17 + iVar30);\n    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);\n    iVar21 = iVar32 - (uVar27 + iVar31);\n    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar27 + uVar26;\n    if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }\n    uVar27 = *puVar25;\n    iVar31 = *(int *)((int)puVar5 + iVar30);\n    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n    iVar21 = iVar31 + uVar27 + iVar21;\n    uVar27 = iVar21 - 1;\n    if (iVar21 == 0) {\n      uVar27 = 0;\n    }\n    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n    uVar26 = *puVar5;\n    *puVar5 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }\n    iVar6 = iVar6 + 1;\n    piVar33 = piVar33 + 2;\n    puVar17 = puVar17 + 2;\n  }" ({ "{") (expression_statement "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" (( "(") (pointer_expression "*local_90" (* "*") (identifier "local_90")) () ")")) (argument_list "(param_11,puVar17[1],local_70 * *piVar33,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (, ",") (binary_expression "local_70 * *piVar33" (identifier "local_70") (* "*") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar5 = (uint *)puVar17[1];" (assignment_expression "puVar5 = (uint *)puVar17[1]" (identifier "puVar5") (= "=") (cast_expression "(uint *)puVar17[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar32 = *(int *)(*puVar17 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar17 + iVar30)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(*puVar17 + iVar30)" (* "*") (cast_expression "(int *)(*puVar17 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + iVar30)" (( "(") (binary_expression "*puVar17 + iVar30" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7)" (identifier "iVar31") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,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 "(puVar5,*puVar17,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" (identifier "iVar21") (= "=") (binary_expression "iVar32 - (uVar27 + iVar31)" (identifier "iVar32") (- "-") (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (identifier "uVar27") (= "=") (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" (identifier "iVar21") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")) (- "-") (identifier "iVar32")))) (; ";")) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (binary_expression "iVar21 + uVar27" (identifier "iVar21") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }\n    else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n      do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);\n      puVar5 = (uint *)*puVar17;\n    }" ({ "{") (do_statement "do {\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n        uVar27 = puVar5[1] + 1;\n        puVar5[1] = uVar27;\n        if (uVar27 != 0) goto LAB_000437d8;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 + 1;\n      }" ({ "{") (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_000437d8;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000437d8;" (goto "goto") (statement_identifier "LAB_000437d8") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" (else "else") (compound_statement "{\nLAB_000437d8:\n      puVar5 = (uint *)*puVar17;\n    }" ({ "{") (labeled_statement "LAB_000437d8:\n      puVar5 = (uint *)*puVar17;" (statement_identifier "LAB_000437d8") (: ":") (expression_statement "puVar5 = (uint *)*puVar17;" (assignment_expression "puVar5 = (uint *)*puVar17" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" (identifier "iVar31") (= "=") (pointer_expression "*(int *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" (identifier "iVar21") (= "=") (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" (identifier "iVar31") (+ "+") (identifier "uVar27")) (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar21 - 1" (identifier "iVar21") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n      uVar27 = 0;\n    }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar27 = 0;\n    }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (binary_expression "iVar21 - uVar27" (identifier "iVar21") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n      do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);\n    }" ({ "{") (do_statement "do {\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      } while (uVar27 == 0);" (do "do") (compound_statement "{\n        uVar27 = puVar5[1];\n        puVar5[1] = uVar27 - 1;\n        if (uVar27 != 0) break;\n        puVar5 = puVar5 + 2;\n        uVar27 = *puVar5;\n        *puVar5 = uVar27 - 1;\n      }" ({ "{") (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 2" (identifier "piVar33") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 < local_7c)" (( "(") (binary_expression "iVar6 < local_7c" (identifier "iVar6") (< "<") (identifier "local_7c")) () ")")) (; ";")) (if_statement "if (param_12 != 0) {\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" (if "if") (parenthesized_expression "(param_12 != 0)" (( "(") (binary_expression "param_12 != 0" (identifier "param_12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000427e4:\n    iVar30 = 0x230;\n    local_30 = 0;\n    local_6c = (code *)0x1;\n    goto LAB_000427f4;\n  }" ({ "{") (labeled_statement "LAB_000427e4:\n    iVar30 = 0x230;" (statement_identifier "LAB_000427e4") (: ":") (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" (identifier "iVar30") (= "=") (number_literal "0x230")) (; ";"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" (identifier "local_6c") (= "=") (cast_expression "(code *)0x1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (goto_statement "goto LAB_000427f4;" (goto "goto") (statement_identifier "LAB_000427f4") (; ";")) (} "}"))) (expression_statement "piVar33 = (int *)*local_68;" (assignment_expression "piVar33 = (int *)*local_68" (identifier "piVar33") (= "=") (cast_expression "(int *)*local_68" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_68" (* "*") (identifier "local_68")))) (; ";")) (if_statement "if (local_7c != 2) goto LAB_0004555c;" (if "if") (parenthesized_expression "(local_7c != 2)" (( "(") (binary_expression "local_7c != 2" (identifier "local_7c") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_0004555c;" (goto "goto") (statement_identifier "LAB_0004555c") (; ";"))) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_5" (* "*") (identifier "param_5")))) (; ";")) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_7;\n    puVar18 = param_11;\n    puVar17 = puVar25;\n    if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }\n  }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_7;" (assignment_expression "puVar5 = param_7" (identifier "puVar5") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar18 = param_11;" (assignment_expression "puVar18 = param_11" (identifier "puVar18") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 == (uint *)0x0) {\n      *param_11 = uVar27;\n    }\n    else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" (if "if") (parenthesized_expression "(param_7 == (uint *)0x0)" (( "(") (binary_expression "param_7 == (uint *)0x0" (identifier "param_7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *param_11 = uVar27;\n    }" ({ "{") (expression_statement "*param_11 = uVar27;" (assignment_expression "*param_11 = uVar27" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "uVar27")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" (else "else") (compound_statement "{\n      do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);\n      *(uint *)((int)param_11 + iVar30) = uVar27;\n    }" ({ "{") (do_statement "do {\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n        *puVar18 = uVar27;\n        puVar5 = (uint *)((int)puVar5 + -1);\n        uVar27 = puVar17[1];\n        puVar18 = puVar18 + 1;\n        puVar17 = puVar17 + 1;\n      }" ({ "{") (expression_statement "*puVar18 = uVar27;" (assignment_expression "*puVar18 = uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + -1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + -1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(uint *)((int)param_11 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)param_11 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)param_11 + iVar30)" (* "*") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar31 = (int)param_7 + 1;" (assignment_expression "iVar31 = (int)param_7 + 1" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31)" (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 "(puVar25,puVar25,param_5[2],iVar31)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31)" (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 "(param_5[2],param_11,param_5[2],iVar31)" (( "(") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)*param_5;" (assignment_expression "puVar25 = (uint *)*param_5" (identifier "puVar25") (= "=") (cast_expression "(uint *)*param_5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_5" (* "*") (identifier "param_5")))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar25 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)puVar25 + iVar30)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (if_statement "if (1 < *puVar17) {\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" (if "if") (parenthesized_expression "(1 < *puVar17)" (( "(") (binary_expression "1 < *puVar17" (number_literal "1") (< "<") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) () ")")) (compound_statement "{\n    uVar26 = *puVar25;\n    uVar27 = *puVar17 - 1;\n    *puVar25 = uVar26 - uVar27;\n    if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }\n    *puVar17 = 1;\n  }" ({ "{") (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "uVar27 = *puVar17 - 1;" (assignment_expression "uVar27 = *puVar17 - 1" (identifier "uVar27") (= "=") (binary_expression "*puVar17 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 - 1;\n      if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }\n    }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00044098:\n        *puVar17 = 0;\n        goto LAB_000440a0;\n      }" ({ "{") (labeled_statement "LAB_00044098:\n        *puVar17 = 0;" (statement_identifier "LAB_00044098") (: ":") (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_000440a0;" (goto "goto") (statement_identifier "LAB_000440a0") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044098;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 - 1;\n        if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }\n      }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044098;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044098;" (goto "goto") (statement_identifier "LAB_00044098") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar5 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n        }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" (do "do") (compound_statement "{\n            if (param_7 == puVar5) goto LAB_00044098;\n            uVar27 = *puVar25;\n            puVar5 = (uint *)((int)puVar5 + 1);\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (if_statement "if (param_7 == puVar5) goto LAB_00044098;" (if "if") (parenthesized_expression "(param_7 == puVar5)" (( "(") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5")) () ")")) (goto_statement "goto LAB_00044098;" (goto "goto") (statement_identifier "LAB_00044098") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (labeled_statement "LAB_000440a0:\n  if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" (statement_identifier "LAB_000440a0") (: ":") (if_statement "if (iVar6 != 0) {\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar25 = (uint *)param_5[2];\n    piVar28 = (int *)((int)puVar25 + iVar30);\n    iVar6 = *piVar28;\n    uVar27 = *puVar25 - iVar6;\n    *puVar25 = uVar27;\n    if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }\n    *piVar28 = 0;\n  }" ({ "{") (expression_statement "puVar25 = (uint *)param_5[2];" (assignment_expression "puVar25 = (uint *)param_5[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_5[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" (identifier "piVar28") (= "=") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" (identifier "iVar6") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n      if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }\n      uVar27 = puVar25[1];\n      puVar25[1] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }\n    }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00044130:\n        *piVar28 = 1;\n        goto LAB_0004413c;\n      }" ({ "{") (labeled_statement "LAB_00044130:\n        *piVar28 = 1;" (statement_identifier "LAB_00044130") (: ":") (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_0004413c;" (goto "goto") (statement_identifier "LAB_0004413c") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_7 == (uint *)0x2) goto LAB_00044130;\n        uVar27 = puVar25[2];\n        puVar25[2] = uVar27 + 1;\n        if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }\n      }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044130;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044130;" (goto "goto") (statement_identifier "LAB_00044130") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar17 = (uint *)0x3;\n          puVar25 = puVar25 + 3;\n          do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);\n        }" ({ "{") (expression_statement "puVar17 = (uint *)0x3;" (assignment_expression "puVar17 = (uint *)0x3" (identifier "puVar17") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n            bVar1 = param_7 == puVar17;\n            puVar17 = (uint *)((int)puVar17 + 1);\n            if (bVar1) goto LAB_00044130;\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 + 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (expression_statement "bVar1 = param_7 == puVar17;" (assignment_expression "bVar1 = param_7 == puVar17" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar17" (identifier "param_7") (== "==") (identifier "puVar17"))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar17 + 1);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + 1)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar17 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + 1)" (( "(") (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_00044130;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00044130;" (goto "goto") (statement_identifier "LAB_00044130") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0004413c:\n  puVar25 = (uint *)param_5[1];" (statement_identifier "LAB_0004413c") (: ":") (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_5[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (if_statement "if (param_7 != (uint *)0xffffffff) {\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n    uVar27 = *puVar25;\n    puVar5 = param_11;\n    puVar18 = param_7;\n    puVar17 = puVar25;\n    if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }\n    *puVar5 = uVar27;\n  }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "puVar5 = param_11;" (assignment_expression "puVar5 = param_11" (identifier "puVar5") (= "=") (identifier "param_11")) (; ";")) (expression_statement "puVar18 = param_7;" (assignment_expression "puVar18 = param_7" (identifier "puVar18") (= "=") (identifier "param_7")) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (param_7 != (uint *)0x0) {\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);\n      puVar5 = (uint *)((int)param_11 + iVar30);\n    }" ({ "{") (do_statement "do {\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      } while (puVar18 != (uint *)0x0);" (do "do") (compound_statement "{\n        *puVar5 = uVar27;\n        puVar18 = (uint *)((int)puVar18 + -1);\n        uVar27 = puVar17[1];\n        puVar5 = puVar5 + 1;\n        puVar17 = puVar17 + 1;\n      }" ({ "{") (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -1)" (( "(") (binary_expression "(int)puVar18 + -1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)0x0)" (( "(") (binary_expression "puVar18 != (uint *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar5 = (uint *)((int)param_11 + iVar30)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar5 = uVar27;" (assignment_expression "*puVar5 = uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (expression_statement "puVar17 = (uint *)((int)param_11 + iVar30);" (assignment_expression "puVar17 = (uint *)((int)param_11 + iVar30)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)param_11 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + iVar30)" (( "(") (binary_expression "(int)param_11 + iVar30" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);" (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31)" (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 "(puVar25,puVar25,param_5[3],iVar31)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar25") (, ",") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar31") () ")"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31)" (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 "(param_5[3],param_11,param_5[3],iVar31)" (( "(") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "param_11") (, ",") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar31") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)param_5[1];" (assignment_expression "puVar25 = (uint *)param_5[1]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_5[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar27 = *(uint *)((int)puVar25 + iVar30);" (assignment_expression "uVar27 = *(uint *)((int)puVar25 + iVar30)" (identifier "uVar27") (= "=") (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar27 - 1;" (assignment_expression "uVar26 = uVar27 - 1" (identifier "uVar26") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (1 < uVar27) {\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" (if "if") (parenthesized_expression "(1 < uVar27)" (( "(") (binary_expression "1 < uVar27" (number_literal "1") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n    uVar27 = *puVar25;\n    *puVar25 = uVar27 - uVar26;\n    if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }\n    *(uint *)((int)puVar25 + iVar30) = uVar27;\n  }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar27 - uVar26;" (assignment_expression "*puVar25 = uVar27 - uVar26" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 - uVar26" (identifier "uVar27") (- "-") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 < uVar26) {\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }\n    else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" (if "if") (parenthesized_expression "(uVar27 < uVar26)" (( "(") (binary_expression "uVar27 < uVar26" (identifier "uVar27") (< "<") (identifier "uVar26")) () ")")) (compound_statement "{\n      if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }\nLAB_00044248:\n      uVar27 = 0;\n    }" ({ "{") (if_statement "if (1 < (int)param_7) {\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n        uVar27 = puVar25[1];\n        puVar25[1] = uVar27 - 1;\n        if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }\n        goto LAB_00045a50;\n      }" ({ "{") (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_7 == (uint *)0x2) goto LAB_00044248;\n          uVar27 = puVar25[2];\n          puVar25[2] = uVar27 - 1;\n          if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }\n        }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_00044248;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00044248;" (goto "goto") (statement_identifier "LAB_00044248") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar18 = (uint *)0x3;\n            puVar5 = puVar25 + 3;\n            do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (expression_statement "puVar18 = (uint *)0x3;" (assignment_expression "puVar18 = (uint *)0x3" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              bVar1 = param_7 == puVar18;\n              puVar18 = (uint *)((int)puVar18 + 1);\n              if (bVar1) goto LAB_00044248;\n              uVar27 = *puVar5;\n              *puVar5 = uVar27 - 1;\n              puVar5 = puVar5 + 1;\n            }" ({ "{") (expression_statement "bVar1 = param_7 == puVar18;" (assignment_expression "bVar1 = param_7 == puVar18" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar18" (identifier "param_7") (== "==") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + 1);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + 1)" (( "(") (binary_expression "(int)puVar18 + 1" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_00044248;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00044248;" (goto "goto") (statement_identifier "LAB_00044248") (; ";"))) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00045a50;" (goto "goto") (statement_identifier "LAB_00045a50") (; ";")) (} "}"))) (labeled_statement "LAB_00044248:\n      uVar27 = 0;" (statement_identifier "LAB_00044248") (: ":") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00045a50:\n      uVar27 = 1;\n    }" (else "else") (compound_statement "{\nLAB_00045a50:\n      uVar27 = 1;\n    }" ({ "{") (labeled_statement "LAB_00045a50:\n      uVar27 = 1;" (statement_identifier "LAB_00045a50") (: ":") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (expression_statement "*(uint *)((int)puVar25 + iVar30) = uVar27;" (assignment_expression "*(uint *)((int)puVar25 + iVar30) = uVar27" (pointer_expression "*(uint *)((int)puVar25 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (iVar6 == 0) goto LAB_000442ec;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000442ec;" (goto "goto") (statement_identifier "LAB_000442ec") (; ";"))) (expression_statement "puVar25 = (uint *)param_5[3];" (assignment_expression "puVar25 = (uint *)param_5[3]" (identifier "puVar25") (= "=") (cast_expression "(uint *)param_5[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar28 = (int *)((int)puVar25 + iVar30);" (assignment_expression "piVar28 = (int *)((int)puVar25 + iVar30)" (identifier "piVar28") (= "=") (cast_expression "(int *)((int)puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar30)" (( "(") (binary_expression "(int)puVar25 + iVar30" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" (identifier "iVar6") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "uVar27 = *puVar25 - iVar6;" (assignment_expression "uVar27 = *puVar25 - iVar6" (identifier "uVar27") (= "=") (binary_expression "*puVar25 - iVar6" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 < (uint)-iVar6) {\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(uVar27 < (uint)-iVar6)" (( "(") (binary_expression "uVar27 < (uint)-iVar6" (identifier "uVar27") (< "<") (binary_expression "(uint)-iVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar6"))) () ")")) (compound_statement "{\n    if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }\n    uVar27 = puVar25[1];\n    puVar25[1] = uVar27 + 1;\n    if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }\n  }" ({ "{") (if_statement "if ((int)param_7 < 2) {\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" (if "if") (parenthesized_expression "((int)param_7 < 2)" (( "(") (binary_expression "(int)param_7 < 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000442e0:\n      *piVar28 = 1;\n      goto LAB_000442ec;\n    }" ({ "{") (labeled_statement "LAB_000442e0:\n      *piVar28 = 1;" (statement_identifier "LAB_000442e0") (: ":") (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000442ec;" (goto "goto") (statement_identifier "LAB_000442ec") (; ";")) (} "}"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_7 == (uint *)0x2) goto LAB_000442e0;\n      uVar27 = puVar25[2];\n      puVar25[2] = uVar27 + 1;\n      if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }\n    }" ({ "{") (if_statement "if (param_7 == (uint *)0x2) goto LAB_000442e0;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_000442e0;" (goto "goto") (statement_identifier "LAB_000442e0") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar5 = (uint *)0x3;\n        puVar25 = puVar25 + 3;\n        do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);\n      }" ({ "{") (expression_statement "puVar5 = (uint *)0x3;" (assignment_expression "puVar5 = (uint *)0x3" (identifier "puVar5") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n          bVar1 = param_7 == puVar5;\n          puVar5 = (uint *)((int)puVar5 + 1);\n          if (bVar1) goto LAB_000442e0;\n          uVar27 = *puVar25;\n          *puVar25 = uVar27 + 1;\n          puVar25 = puVar25 + 1;\n        }" ({ "{") (expression_statement "bVar1 = param_7 == puVar5;" (assignment_expression "bVar1 = param_7 == puVar5" (identifier "bVar1") (= "=") (binary_expression "param_7 == puVar5" (identifier "param_7") (== "==") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar5 + 1);" (assignment_expression "puVar5 = (uint *)((int)puVar5 + 1)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_000442e0;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_000442e0;" (goto "goto") (statement_identifier "LAB_000442e0") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar27 + 1;" (assignment_expression "*puVar25 = uVar27 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000442ec:\n  do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" (statement_identifier "LAB_000442ec") (: ":") (do_statement "do {\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  } while( true );" (do "do") (compound_statement "{\n    iVar6 = 0;\n    puVar25 = param_5;\n    do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);\nLAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);\n    iVar30 = (int)param_7 * 4;\n    puVar17 = param_11 + (int)param_7;\n    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);\n  }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" (identifier "puVar25") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    } while (iVar6 < local_7c);" (do "do") (compound_statement "{\n      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);\n      puVar5 = (uint *)puVar25[1];\n      uVar27 = *puVar17;\n      iVar32 = *(int *)(*puVar25 + iVar30);\n      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);\n      iVar21 = iVar32 - (uVar27 + iVar31);\n      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;\n      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar27 + uVar26;\n      if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }\n      uVar27 = *puVar17;\n      iVar31 = *(int *)((int)puVar5 + iVar30);\n      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);\n      iVar21 = iVar31 + uVar27 + iVar21;\n      uVar27 = iVar21 - 1;\n      if (iVar21 == 0) {\n        uVar27 = 0;\n      }\n      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;\n      uVar26 = *puVar5;\n      *puVar5 = uVar26 - uVar27;\n      if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }\n      iVar6 = iVar6 + 1;\n      piVar33 = piVar33 + 2;\n      puVar25 = puVar25 + 2;\n    }" ({ "{") (expression_statement "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);" (call_expression "(*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7)" (parenthesized_expression "(*local_90)" (( "(") (pointer_expression "*local_90" (* "*") (identifier "local_90")) () ")")) (argument_list "(param_11,puVar25[1],local_70 * *piVar33,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (, ",") (binary_expression "local_70 * *piVar33" (identifier "local_70") (* "*") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar5 = (uint *)puVar25[1];" (assignment_expression "puVar5 = (uint *)puVar25[1]" (identifier "puVar5") (= "=") (cast_expression "(uint *)puVar25[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "iVar32 = *(int *)(*puVar25 + iVar30);" (assignment_expression "iVar32 = *(int *)(*puVar25 + iVar30)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(*puVar25 + iVar30)" (* "*") (cast_expression "(int *)(*puVar25 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar25 + iVar30)" (( "(") (binary_expression "*puVar25 + iVar30" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);" (assignment_expression "iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7)" (identifier "iVar31") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,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 "(puVar5,*puVar25,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar32 - (uVar27 + iVar31);" (assignment_expression "iVar21 = iVar32 - (uVar27 + iVar31)" (identifier "iVar21") (= "=") (binary_expression "iVar32 - (uVar27 + iVar31)" (identifier "iVar32") (- "-") (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;" (assignment_expression "uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (identifier "uVar27") (= "=") (binary_expression "iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32" (binary_expression "iVar21 >> 0x1f" (identifier "iVar21") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar31) - iVar32" (parenthesized_expression "(uVar27 + iVar31)" (( "(") (binary_expression "uVar27 + iVar31" (identifier "uVar27") (+ "+") (identifier "iVar31")) () ")")) (- "-") (identifier "iVar32")))) (; ";")) (expression_statement "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;" (assignment_expression "*(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27" (pointer_expression "*(uint *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(uint *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (binary_expression "iVar21 + uVar27" (identifier "iVar21") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + uVar26;" (assignment_expression "*puVar5 = uVar27 + uVar26" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }\n      else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);\n        puVar5 = (uint *)*puVar25;\n      }" ({ "{") (do_statement "do {\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n          uVar27 = puVar5[1] + 1;\n          puVar5[1] = uVar27;\n          if (uVar27 != 0) goto LAB_000442f4;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 + 1;\n        }" ({ "{") (expression_statement "uVar27 = puVar5[1] + 1;" (assignment_expression "uVar27 = puVar5[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5[1] = uVar27;" (assignment_expression "puVar5[1] = uVar27" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_000442f4;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000442f4;" (goto "goto") (statement_identifier "LAB_000442f4") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";")) (} "}")) (else_clause "else {\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" (else "else") (compound_statement "{\nLAB_000442f4:\n        puVar5 = (uint *)*puVar25;\n      }" ({ "{") (labeled_statement "LAB_000442f4:\n        puVar5 = (uint *)*puVar25;" (statement_identifier "LAB_000442f4") (: ":") (expression_statement "puVar5 = (uint *)*puVar25;" (assignment_expression "puVar5 = (uint *)*puVar25" (identifier "puVar5") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";"))) (} "}")))) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "iVar31 = *(int *)((int)puVar5 + iVar30);" (assignment_expression "iVar31 = *(int *)((int)puVar5 + iVar30)" (identifier "iVar31") (= "=") (pointer_expression "*(int *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")"))))) (; ";")) (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,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 "(puVar5,puVar5,param_11,param_7)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar21 = iVar31 + uVar27 + iVar21;" (assignment_expression "iVar21 = iVar31 + uVar27 + iVar21" (identifier "iVar21") (= "=") (binary_expression "iVar31 + uVar27 + iVar21" (binary_expression "iVar31 + uVar27" (identifier "iVar31") (+ "+") (identifier "uVar27")) (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "uVar27 = iVar21 - 1;" (assignment_expression "uVar27 = iVar21 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar21 - 1" (identifier "iVar21") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n        uVar27 = 0;\n      }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar27 = 0;\n      }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;" (assignment_expression "*(int *)((int)puVar5 + iVar30) = iVar21 - uVar27" (pointer_expression "*(int *)((int)puVar5 + iVar30)" (* "*") (cast_expression "(int *)((int)puVar5 + iVar30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + iVar30)" (( "(") (binary_expression "(int)puVar5 + iVar30" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar30")) () ")")))) (= "=") (binary_expression "iVar21 - uVar27" (identifier "iVar21") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar26 - uVar27;" (assignment_expression "*puVar5 = uVar26 - uVar27" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n        do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);\n      }" ({ "{") (do_statement "do {\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        } while (uVar27 == 0);" (do "do") (compound_statement "{\n          uVar27 = puVar5[1];\n          puVar5[1] = uVar27 - 1;\n          if (uVar27 != 0) break;\n          puVar5 = puVar5 + 2;\n          uVar27 = *puVar5;\n          *puVar5 = uVar27 - 1;\n        }" ({ "{") (expression_statement "uVar27 = puVar5[1];" (assignment_expression "uVar27 = puVar5[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[1] = uVar27 - 1;" (assignment_expression "puVar5[1] = uVar27 - 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 - 1;" (assignment_expression "*puVar5 = uVar27 - 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 2;" (assignment_expression "piVar33 = piVar33 + 2" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 2" (identifier "piVar33") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 < local_7c)" (( "(") (binary_expression "iVar6 < local_7c" (identifier "iVar6") (< "<") (identifier "local_7c")) () ")")) (; ";")) (labeled_statement "LAB_000446c4:\n    do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" (statement_identifier "LAB_000446c4") (: ":") (do_statement "do {\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    } while (local_7c < 1);" (do "do") (compound_statement "{\n      local_30 = 0;\n      if (local_84 == param_5) goto LAB_00045c00;\n      local_6c = (code *)0x0;\n      iVar30 = 0x270;\n      param_4 = param_5;\nLAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }\n      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);\n      iVar6 = 1 << (uVar27 & 0x1f);\n      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);\n      if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);\nLAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);\nLAB_0004555c:\n      iVar30 = param_9 << 3;\n      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);\n      piVar28 = local_68 + -2;\n      piVar24 = (int *)local_68[-1];\n      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);\n      puVar25 = param_5 + 1;\n      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);\n      if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }\n    }" ({ "{") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_84 == param_5) goto LAB_00045c00;" (if "if") (parenthesized_expression "(local_84 == param_5)" (( "(") (binary_expression "local_84 == param_5" (identifier "local_84") (== "==") (identifier "param_5")) () ")")) (goto_statement "goto LAB_00045c00;" (goto "goto") (statement_identifier "LAB_00045c00") (; ";"))) (expression_statement "local_6c = (code *)0x0;" (assignment_expression "local_6c = (code *)0x0" (identifier "local_6c") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar30 = 0x270;" (assignment_expression "iVar30 = 0x270" (identifier "iVar30") (= "=") (number_literal "0x270")) (; ";")) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" (identifier "param_4") (= "=") (identifier "param_5")) (; ";")) (labeled_statement "LAB_000427f4:\n      if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" (statement_identifier "LAB_000427f4") (: ":") (if_statement "if ((int)param_7 < iVar30) {\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" (if "if") (parenthesized_expression "((int)param_7 < iVar30)" (( "(") (binary_expression "(int)param_7 < iVar30" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (identifier "iVar30")) () ")")) (compound_statement "{\n        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);\n        puVar17 = puVar25 + (int)param_7;\n        if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }\nLAB_00042c64:\n        iVar30 = (int)param_7 * 4;\n        if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }\n        iVar6 = (int)param_7 + 1;\n        local_7c = iVar6 * 4;\n        puVar17 = param_11 + iVar6;\n        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);\n        puVar3 = PTR_LAB_0009d078;\n        puVar5 = puVar17 + (int)param_7;\n        *param_5 = (uint)puVar17;\n        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);\n        puVar25 = puVar17;\n        if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }\n        if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }\n        local_80 = iVar23 - 1;\n        if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }\n        iVar21 = local_80 * param_8;\n        iVar31 = param_2 * 2;\n        puVar25 = (uint *)((int)param_7 + iVar21);\n        local_78 = (int)puVar25 + 1;\n        if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }\n        if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }\nLAB_00043068:\n        iVar30 = local_78 + param_2 * -2;\n        if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }\nLAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }\n        (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_00045c00:\n        iVar30 = 0x230;\n        local_6c = (code *)0x1;\n        param_4 = local_84;\n        goto LAB_000427f4;\n      }" ({ "{") (expression_statement "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8);" (assignment_expression "puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" (identifier "puVar25") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(int)param_7 * 8)" (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_30,(int)param_7 * 8)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(int)param_7 * 8" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar17 = puVar25 + (int)param_7;" (assignment_expression "puVar17 = puVar25 + (int)param_7" (identifier "puVar17") (= "=") (binary_expression "puVar25 + (int)param_7" (identifier "puVar25") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (if_statement "if (0 < iVar23) {\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" (if "if") (parenthesized_expression "(0 < iVar23)" (( "(") (binary_expression "0 < iVar23" (number_literal "0") (< "<") (identifier "iVar23")) () ")")) (compound_statement "{\n          iVar30 = 0;\n          do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);\n        }" ({ "{") (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" (identifier "iVar30") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          } while (iVar23 != iVar30);" (do "do") (compound_statement "{\n            piVar33 = (int *)local_84[iVar30];\n            uVar27 = param_4[iVar30];\n            if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }\n            piVar24 = piVar33 + (int)param_7;\n            piVar28 = (int *)(uVar27 + (int)param_7 * 4);\n            if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }\n            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);\n            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }\nLAB_00043ce4:\n            *piVar24 = iVar6;\n            iVar30 = iVar30 + 1;\n          }" ({ "{") (expression_statement "piVar33 = (int *)local_84[iVar30];" (assignment_expression "piVar33 = (int *)local_84[iVar30]" (identifier "piVar33") (= "=") (cast_expression "(int *)local_84[iVar30]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_84[iVar30]" (identifier "local_84") ([ "[") (identifier "iVar30") (] "]")))) (; ";")) (expression_statement "uVar27 = param_4[iVar30];" (assignment_expression "uVar27 = param_4[iVar30]" (identifier "uVar27") (= "=") (subscript_expression "param_4[iVar30]" (identifier "param_4") ([ "[") (identifier "iVar30") (] "]"))) (; ";")) (if_statement "if (local_84 == param_4) {\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }\n            else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" (if "if") (parenthesized_expression "(local_84 == param_4)" (( "(") (binary_expression "local_84 == param_4" (identifier "local_84") (== "==") (identifier "param_4")) () ")")) (compound_statement "{\n              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);\n            }" ({ "{") (expression_statement "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_0009d394)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqr_0009d394" (* "*") (cast_expression "(code *)PTR___gmpn_sqr_0009d394" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqr_0009d394"))) () ")")) (argument_list "(puVar25,piVar33,param_7)" (( "(") (identifier "puVar25") (, ",") (identifier "piVar33") (, ",") (identifier "param_7") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" (else "else") (compound_statement "{\n              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);\n            }" ({ "{") (expression_statement "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_0009d364)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_n_0009d364" (* "*") (cast_expression "(code *)PTR___gmpn_mul_n_0009d364" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_n_0009d364"))) () ")")) (argument_list "(puVar25,uVar27,piVar33,param_7)" (( "(") (identifier "puVar25") (, ",") (identifier "uVar27") (, ",") (identifier "piVar33") (, ",") (identifier "param_7") () ")"))) (; ";")) (} "}")))) (expression_statement "piVar24 = piVar33 + (int)param_7;" (assignment_expression "piVar24 = piVar33 + (int)param_7" (identifier "piVar24") (= "=") (binary_expression "piVar33 + (int)param_7" (identifier "piVar33") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "piVar28 = (int *)(uVar27 + (int)param_7 * 4);" (assignment_expression "piVar28 = (int *)(uVar27 + (int)param_7 * 4)" (identifier "piVar28") (= "=") (cast_expression "(int *)(uVar27 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar27 + (int)param_7 * 4)" (( "(") (binary_expression "uVar27 + (int)param_7 * 4" (identifier "uVar27") (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (*piVar24 == 0) {\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }\n            else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" (if "if") (parenthesized_expression "(*piVar24 == 0)" (( "(") (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar27 = 0;\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }\n            }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_0009d514"))) (; ";")) (if_statement "if (*piVar28 != 0) {\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" (if "if") (parenthesized_expression "(*piVar28 != 0)" (( "(") (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);\n                uVar27 = uVar27 + iVar6 + *piVar24;\n                goto LAB_00043d68;\n              }" ({ "{") (labeled_statement "LAB_00043d3c:\n                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" (statement_identifier "LAB_00043d3c") (: ":") (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,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 "(puVar17,puVar17,piVar33,param_7)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (identifier "piVar33") (, ",") (identifier "param_7") () ")")))) (; ";"))) (expression_statement "uVar27 = uVar27 + iVar6 + *piVar24;" (assignment_expression "uVar27 = uVar27 + iVar6 + *piVar24" (identifier "uVar27") (= "=") (binary_expression "uVar27 + iVar6 + *piVar24" (binary_expression "uVar27 + iVar6" (identifier "uVar27") (+ "+") (identifier "iVar6")) (+ "+") (pointer_expression "*piVar24" (* "*") (identifier "piVar24")))) (; ";")) (goto_statement "goto LAB_00043d68;" (goto "goto") (statement_identifier "LAB_00043d68") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" (else "else") (compound_statement "{\n              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);\n              if (*piVar28 != 0) goto LAB_00043d3c;\nLAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n              if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }\n            }" ({ "{") (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7)" (identifier "uVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,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 "(puVar17,puVar17,uVar27,param_7)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (identifier "uVar27") (, ",") (identifier "param_7") () ")")))) (; ";")) (if_statement "if (*piVar28 != 0) goto LAB_00043d3c;" (if "if") (parenthesized_expression "(*piVar28 != 0)" (( "(") (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043d3c;" (goto "goto") (statement_identifier "LAB_00043d3c") (; ";"))) (labeled_statement "LAB_00043d68:\n              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (statement_identifier "LAB_00043d68") (: ":") (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_0009d514"))) (; ";"))) (if_statement "if (((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" (if "if") (parenthesized_expression "(((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0))" (( "(") (binary_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))) &&\n                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" (parenthesized_expression "((((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))))" (( "(") (binary_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)) &&\n                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" (parenthesized_expression "(((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1))" (( "(") (binary_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&\n                   (1 < (int)param_7 << 1)" (parenthesized_expression "((uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27))" (( "(") (binary_expression "(uVar27 != 0) &&\n                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)" (( "(") (comma_expression "uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (, ",") (comma_expression "*puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (, ",") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(1 < (int)param_7 << 1)" (( "(") (binary_expression "1 < (int)param_7 << 1" (number_literal "1") (< "<") (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (<< "<<") (number_literal "1"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)))" (( "(") (parenthesized_expression "(uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2))" (( "(") (comma_expression "uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar27 + 1 == 0 &&\n                   ((int)param_7 << 1 != 2)" (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "((int)param_7 << 1 != 2)" (( "(") (binary_expression "(int)param_7 << 1 != 2" (binary_expression "(int)param_7 << 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (<< "<<") (number_literal "1")) (!= "!=") (number_literal "2")) () ")"))))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)" (( "(") (comma_expression "uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (, ",") (comma_expression "puVar25[2] = uVar27 + 1, uVar27 + 1 == 0" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n                puVar5 = puVar25 + 3;\n                do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);\n              }" ({ "{") (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                  if (puVar25 + (int)param_7 * 2 == puVar5) break;\n                  uVar27 = *puVar5;\n                  *puVar5 = uVar27 + 1;\n                  puVar5 = puVar5 + 1;\n                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;\n                }" ({ "{") (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_0009d514"))) (; ";")) (if_statement "if (puVar25 + (int)param_7 * 2 == puVar5) break;" (if "if") (parenthesized_expression "(puVar25 + (int)param_7 * 2 == puVar5)" (( "(") (binary_expression "puVar25 + (int)param_7 * 2 == puVar5" (binary_expression "puVar25 + (int)param_7 * 2" (identifier "puVar25") (+ "+") (binary_expression "(int)param_7 * 2" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "2"))) (== "==") (identifier "puVar5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_0009d514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_0009d514"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);" (assignment_expression "iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7)" (identifier "iVar6") (= "=") (call_expression "(*pcVar14)(piVar33,puVar25,puVar17,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(piVar33,puVar25,puVar17,param_7)" (( "(") (identifier "piVar33") (, ",") (identifier "puVar25") (, ",") (identifier "puVar17") (, ",") (identifier "param_7") () ")")))) (; ";")) (if_statement "if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {\nLAB_00043d00:\n              iVar6 = 0;\n            }\n            else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" (if "if") (parenthesized_expression "((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0))" (( "(") (binary_expression "(iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)" (( "(") (comma_expression "iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "iVar6 = *piVar33" (identifier "iVar6") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (, ",") (comma_expression "*piVar33 = iVar6 + 1, iVar6 + 1 != 0" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\nLAB_00043d00:\n              iVar6 = 0;\n            }" ({ "{") (labeled_statement "LAB_00043d00:\n              iVar6 = 0;" (statement_identifier "LAB_00043d00") (: ":") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" (else "else") (compound_statement "{\n              iVar6 = 1;\n              if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }\n            }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (if_statement "if (1 < (int)param_7) {\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n                iVar6 = piVar33[1];\n                piVar33[1] = iVar6 + 1;\n                if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }\n                goto LAB_00043d00;\n              }" ({ "{") (expression_statement "iVar6 = piVar33[1];" (assignment_expression "iVar6 = piVar33[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar33[1] = iVar6 + 1;" (assignment_expression "piVar33[1] = iVar6 + 1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 + 1 == 0) {\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" (if "if") (parenthesized_expression "(iVar6 + 1 == 0)" (( "(") (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar6 = 1;\n                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;\n                  iVar6 = piVar33[2];\n                  piVar33[2] = iVar6 + 1;\n                  if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }\n                }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_7 == (uint *)0x2) goto LAB_00043ce4;" (if "if") (parenthesized_expression "(param_7 == (uint *)0x2)" (( "(") (binary_expression "param_7 == (uint *)0x2" (identifier "param_7") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00043ce4;" (goto "goto") (statement_identifier "LAB_00043ce4") (; ";"))) (expression_statement "iVar6 = piVar33[2];" (assignment_expression "iVar6 = piVar33[2]" (identifier "iVar6") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar33[2] = iVar6 + 1;" (assignment_expression "piVar33[2] = iVar6 + 1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 + 1 == 0) {\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" (if "if") (parenthesized_expression "(iVar6 + 1 == 0)" (( "(") (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);\n                  }" ({ "{") (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar6 + 1 == 0);" (do "do") (compound_statement "{\n                      if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }\n                      iVar6 = *piVar33;\n                      *piVar33 = iVar6 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" ({ "{") (if_statement "if (piVar24 == piVar33) {\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" (if "if") (parenthesized_expression "(piVar24 == piVar33)" (( "(") (binary_expression "piVar24 == piVar33" (identifier "piVar24") (== "==") (identifier "piVar33")) () ")")) (compound_statement "{\n                        iVar6 = 1;\n                        goto LAB_00043ce4;\n                      }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00043ce4;" (goto "goto") (statement_identifier "LAB_00043ce4") (; ";")) (} "}"))) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" (identifier "iVar6") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 + 1 == 0)" (( "(") (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00043d00;" (goto "goto") (statement_identifier "LAB_00043d00") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00043ce4:\n            *piVar24 = iVar6;" (statement_identifier "LAB_00043ce4") (: ":") (expression_statement "*piVar24 = iVar6;" (assignment_expression "*piVar24 = iVar6" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (identifier "iVar6")) (; ";"))) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar23 != iVar30)" (( "(") (binary_expression "iVar23 != iVar30" (identifier "iVar23") (!= "!=") (identifier "iVar30")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00042c64:\n        iVar30 = (int)param_7 * 4;" (statement_identifier "LAB_00042c64") (: ":") (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";"))) (if_statement "if (local_30 != 0) {\n          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (*(code *)PTR___gmp_tmp_reentrant_free_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 "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar6 = (int)param_7 + 1;" (assignment_expression "iVar6 = (int)param_7 + 1" (identifier "iVar6") (= "=") (binary_expression "(int)param_7 + 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_7c = iVar6 * 4;" (assignment_expression "local_7c = iVar6 * 4" (identifier "local_7c") (= "=") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar17 = param_11 + iVar6;" (assignment_expression "puVar17 = param_11 + iVar6" (identifier "puVar17") (= "=") (binary_expression "param_11 + iVar6" (identifier "param_11") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);" (call_expression "FUN_00041a80(local_84,iVar23,local_70,param_7,param_11)" (identifier "FUN_00041a80") (argument_list "(local_84,iVar23,local_70,param_7,param_11)" (( "(") (identifier "local_84") (, ",") (identifier "iVar23") (, ",") (identifier "local_70") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "puVar3 = PTR_LAB_0009d078;" (assignment_expression "puVar3 = PTR_LAB_0009d078" (identifier "puVar3") (= "=") (identifier "PTR_LAB_0009d078")) (; ";")) (expression_statement "puVar5 = puVar17 + (int)param_7;" (assignment_expression "puVar5 = puVar17 + (int)param_7" (identifier "puVar5") (= "=") (binary_expression "puVar17 + (int)param_7" (identifier "puVar17") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "*param_5 = (uint)puVar17;" (assignment_expression "*param_5 = (uint)puVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (cast_expression "(uint)puVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar17"))) (; ";")) (expression_statement "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" (identifier "FUN_00040790") (argument_list "(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7)" (( "(") (identifier "puVar17") (, ",") (pointer_expression "*local_84" (* "*") (identifier "local_84")) (, ",") (binary_expression "(int)param_7 * 0x40 - param_3" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "0x40")) (- "-") (identifier "param_3")) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar25 = puVar17;" (assignment_expression "puVar25 = puVar17" (identifier "puVar25") (= "=") (identifier "puVar17")) (; ";")) (if_statement "if (*puVar5 != 0) {\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" (if "if") (parenthesized_expression "(*puVar5 != 0)" (( "(") (binary_expression "*puVar5 != 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);\n          if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }\n        }" ({ "{") (do_statement "do {\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          } while (uVar27 == 0);" (do "do") (compound_statement "{\n            uVar27 = *puVar25;\n            *puVar25 = uVar27 - 1;\n            puVar25 = puVar25 + 1;\n          }" ({ "{") (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*puVar5 == 0) {\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }\n          else {\n            *puVar5 = 0;\n          }" (if "if") (parenthesized_expression "(*puVar5 == 0)" (( "(") (binary_expression "*puVar5 == 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }\n            *puVar5 = 1;\n          }" ({ "{") (if_statement "if (param_7 != (uint *)0x0) {\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);\n            }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30)" (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 "(puVar17,0,iVar30)" (( "(") (identifier "puVar17") (, ",") (number_literal "0") (, ",") (identifier "iVar30") () ")"))) (; ";")) (} "}"))) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            *puVar5 = 0;\n          }" (else "else") (compound_statement "{\n            *puVar5 = 0;\n          }" ({ "{") (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (1 < iVar23) {\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" (if "if") (parenthesized_expression "(1 < iVar23)" (( "(") (binary_expression "1 < iVar23" (number_literal "1") (< "<") (identifier "iVar23")) () ")")) (compound_statement "{\n          puVar5 = local_84 + 1;\n          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);\n          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));\n          puVar25 = param_5;\n          do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);\n        }" ({ "{") (expression_statement "puVar5 = local_84 + 1;" (assignment_expression "puVar5 = local_84 + 1" (identifier "puVar5") (= "=") (binary_expression "local_84 + 1" (identifier "local_84") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);" (assignment_expression "iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" (identifier "iVar31") (= "=") (binary_expression "(int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3)" (binary_expression "(int)param_7 * 0x40" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "0x40")) (- "-") (parenthesized_expression "((iVar23 + -1) * param_9 + param_3)" (( "(") (binary_expression "(iVar23 + -1) * param_9 + param_3" (binary_expression "(iVar23 + -1) * param_9" (parenthesized_expression "(iVar23 + -1)" (( "(") (binary_expression "iVar23 + -1" (identifier "iVar23") (+ "+") (number_literal "-1")) () ")")) (* "*") (identifier "param_9")) (+ "+") (identifier "param_3")) () ")")))) (; ";")) (expression_statement "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));" (assignment_expression "puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)local_84 + (4 << (param_3 & 0x1f)))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_84 + (4 << (param_3 & 0x1f)))" (( "(") (binary_expression "(int)local_84 + (4 << (param_3 & 0x1f))" (cast_expression "(int)local_84" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_84")) (+ "+") (parenthesized_expression "(4 << (param_3 & 0x1f))" (( "(") (binary_expression "4 << (param_3 & 0x1f)" (number_literal "4") (<< "<<") (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" (identifier "puVar25") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          } while (puVar17 != puVar5);" (do "do") (compound_statement "{\n            puVar25 = puVar25 + 1;\n            piVar24 = (int *)puVar5[-1];\n            *puVar25 = (uint)piVar24;\n            piVar28 = piVar24 + (int)param_7;\n            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);\n            piVar33 = piVar24;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            puVar5 = puVar5 + 1;\n            iVar31 = iVar31 + param_9;\n            local_84 = param_11;\n          }" ({ "{") (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar24 = (int *)puVar5[-1];" (assignment_expression "piVar24 = (int *)puVar5[-1]" (identifier "piVar24") (= "=") (cast_expression "(int *)puVar5[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[-1]" (identifier "puVar5") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "*puVar25 = (uint)piVar24;" (assignment_expression "*puVar25 = (uint)piVar24" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (cast_expression "(uint)piVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar24"))) (; ";")) (expression_statement "piVar28 = piVar24 + (int)param_7;" (assignment_expression "piVar28 = piVar24 + (int)param_7" (identifier "piVar28") (= "=") (binary_expression "piVar24 + (int)param_7" (identifier "piVar24") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);" (call_expression "(*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7)" (parenthesized_expression "(*(code *)(puVar3 + 0x790))" (( "(") (pointer_expression "*(code *)(puVar3 + 0x790)" (* "*") (cast_expression "(code *)(puVar3 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x790)" (( "(") (binary_expression "puVar3 + 0x790" (identifier "puVar3") (+ "+") (number_literal "0x790")) () ")")))) () ")")) (argument_list "(piVar24,*puVar5,iVar31,param_7)" (( "(") (identifier "piVar24") (, ",") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (, ",") (identifier "iVar31") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" (identifier "piVar33") (= "=") (identifier "piVar24")) (; ";")) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" (if "if") (parenthesized_expression "(*piVar28 != 0)" (( "(") (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);\n              if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" ({ "{") (do_statement "do {\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar21 == 0);" (do "do") (compound_statement "{\n                iVar21 = *piVar33;\n                *piVar33 = iVar21 + -1;\n                piVar33 = piVar33 + 1;\n              }" ({ "{") (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" (identifier "iVar21") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*piVar28 == 0) {\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" (if "if") (parenthesized_expression "(*piVar28 == 0)" (( "(") (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }\n                *piVar28 = 1;\n              }" ({ "{") (if_statement "if (param_7 != (uint *)0x0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" (if "if") (parenthesized_expression "(param_7 != (uint *)0x0)" (( "(") (binary_expression "param_7 != (uint *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);\n                }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30)" (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 "(piVar24,0,iVar30)" (( "(") (identifier "piVar24") (, ",") (number_literal "0") (, ",") (identifier "iVar30") () ")"))) (; ";")) (} "}"))) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                *piVar28 = 0;\n              }" (else "else") (compound_statement "{\n                *piVar28 = 0;\n              }" ({ "{") (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar31 = iVar31 + param_9;" (assignment_expression "iVar31 = iVar31 + param_9" (identifier "iVar31") (= "=") (binary_expression "iVar31 + param_9" (identifier "iVar31") (+ "+") (identifier "param_9"))) (; ";")) (expression_statement "local_84 = param_11;" (assignment_expression "local_84 = param_11" (identifier "local_84") (= "=") (identifier "param_11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 != puVar5)" (( "(") (binary_expression "puVar17 != puVar5" (identifier "puVar17") (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "local_80 = iVar23 - 1;" (assignment_expression "local_80 = iVar23 - 1" (identifier "local_80") (= "=") (binary_expression "iVar23 - 1" (identifier "iVar23") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (param_7 != (uint *)0xffffffff) {\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" (if "if") (parenthesized_expression "(param_7 != (uint *)0xffffffff)" (( "(") (binary_expression "param_7 != (uint *)0xffffffff" (identifier "param_7") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);\n        }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4)" (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 "(param_11,0,iVar6 * 4)" (( "(") (identifier "param_11") (, ",") (number_literal "0") (, ",") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar21 = local_80 * param_8;" (assignment_expression "iVar21 = local_80 * param_8" (identifier "iVar21") (= "=") (binary_expression "local_80 * param_8" (identifier "local_80") (* "*") (identifier "param_8"))) (; ";")) (expression_statement "iVar31 = param_2 * 2;" (assignment_expression "iVar31 = param_2 * 2" (identifier "iVar31") (= "=") (binary_expression "param_2 * 2" (identifier "param_2") (* "*") (number_literal "2"))) (; ";")) (expression_statement "puVar25 = (uint *)((int)param_7 + iVar21);" (assignment_expression "puVar25 = (uint *)((int)param_7 + iVar21)" (identifier "puVar25") (= "=") (cast_expression "(uint *)((int)param_7 + iVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_7 + iVar21)" (( "(") (binary_expression "(int)param_7 + iVar21" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "local_78 = (int)puVar25 + 1;" (assignment_expression "local_78 = (int)puVar25 + 1" (identifier "local_78") (= "=") (binary_expression "(int)puVar25 + 1" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == 0) {\n          puVar17 = (uint *)0xffffffff;\n        }\n        else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" (if "if") (parenthesized_expression "(local_78 == 0)" (( "(") (binary_expression "local_78 == 0" (identifier "local_78") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar17 = (uint *)0xffffffff;\n        }" ({ "{") (expression_statement "puVar17 = (uint *)0xffffffff;" (assignment_expression "puVar17 = (uint *)0xffffffff" (identifier "puVar17") (= "=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}")) (else_clause "else {\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" (else "else") (compound_statement "{\n          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);\n          puVar17 = puVar25;\n        }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);" (call_expression "(*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4)" (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 "(param_6,0,local_78 * 4)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (binary_expression "local_78 * 4" (identifier "local_78") (* "*") (number_literal "4")) () ")"))) (; ";")) (expression_statement "puVar17 = puVar25;" (assignment_expression "puVar17 = puVar25" (identifier "puVar17") (= "=") (identifier "puVar25")) (; ";")) (} "}")))) (if_statement "if (-1 < (int)local_80) {\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(-1 < (int)local_80)" (( "(") (binary_expression "-1 < (int)local_80" (number_literal "-1") (< "<") (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80"))) () ")")) (compound_statement "{\n          local_7c = 0;\n          local_70 = (iVar21 + 1) - (int)puVar17;\n          piVar24 = param_6 + iVar21;\n          piVar28 = param_6 + iVar6 + iVar21 + 1;\n          piVar33 = param_6 + (int)puVar17;\n          local_84 = param_11 + (int)param_7;\n          puVar17 = param_7;\n          uVar27 = local_80;\n          do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);\n          if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = (iVar21 + 1) - (int)puVar17;" (assignment_expression "local_70 = (iVar21 + 1) - (int)puVar17" (identifier "local_70") (= "=") (binary_expression "(iVar21 + 1) - (int)puVar17" (parenthesized_expression "(iVar21 + 1)" (( "(") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1")) () ")")) (- "-") (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")))) (; ";")) (expression_statement "piVar24 = param_6 + iVar21;" (assignment_expression "piVar24 = param_6 + iVar21" (identifier "piVar24") (= "=") (binary_expression "param_6 + iVar21" (identifier "param_6") (+ "+") (identifier "iVar21"))) (; ";")) (expression_statement "piVar28 = param_6 + iVar6 + iVar21 + 1;" (assignment_expression "piVar28 = param_6 + iVar6 + iVar21 + 1" (identifier "piVar28") (= "=") (binary_expression "param_6 + iVar6 + iVar21 + 1" (binary_expression "param_6 + iVar6 + iVar21" (binary_expression "param_6 + iVar6" (identifier "param_6") (+ "+") (identifier "iVar6")) (+ "+") (identifier "iVar21")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = param_6 + (int)puVar17;" (assignment_expression "piVar33 = param_6 + (int)puVar17" (identifier "piVar33") (= "=") (binary_expression "param_6 + (int)puVar17" (identifier "param_6") (+ "+") (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")))) (; ";")) (expression_statement "local_84 = param_11 + (int)param_7;" (assignment_expression "local_84 = param_11 + (int)param_7" (identifier "local_84") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "puVar17 = param_7;" (assignment_expression "puVar17 = param_7" (identifier "puVar17") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uVar27 = local_80;" (assignment_expression "uVar27 = local_80" (identifier "uVar27") (= "=") (identifier "local_80")) (; ";")) (do_statement "do {\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          } while (uVar27 != 0xffffffff);" (do "do") (compound_statement "{\n            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);\n            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }\n            uVar26 = param_5[iVar23 - uVar27 & local_80];\n            param_11[param_8 * 2] = uVar27 + 1;\n            puVar18 = (uint *)(uVar26 + iVar30);\n            iVar21 = iVar6;\n            puVar5 = local_84;\n            do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);\n            if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }\nLAB_00043030:\n            uVar27 = uVar27 - 1;\n            piVar24 = piVar24 + -param_8;\n            piVar28 = piVar28 + -param_8;\n            puVar17 = (uint *)((int)puVar17 + param_8);\n            piVar33 = piVar33 + -param_8;\n          }" ({ "{") (expression_statement "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);" (assignment_expression "iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" (identifier "iVar21") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" (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 "(piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6)" (( "(") (identifier "piVar24") (, ",") (identifier "piVar24") (, ",") (subscript_expression "param_5[iVar23 - uVar27 & local_80]" (identifier "param_5") ([ "[") (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" (identifier "iVar23") (- "-") (identifier "uVar27")) (& "&") (identifier "local_80")) (] "]")) (, ",") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))\n            {\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" (if "if") (parenthesized_expression "((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))" (( "(") (binary_expression "(iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0)" (( "(") (comma_expression "iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "iVar21 = piVar28[-1]" (identifier "iVar21") (= "=") (subscript_expression "piVar28[-1]" (identifier "piVar28") ([ "[") (number_literal "-1") (] "]"))) (, ",") (comma_expression "piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0" (assignment_expression "piVar28[-1] = iVar21 + 1" (subscript_expression "piVar28[-1]" (identifier "piVar28") ([ "[") (number_literal "-1") (] "]")) (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n              iVar21 = (int)puVar17 - (int)param_7;\n              if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }\n            }" ({ "{") (expression_statement "iVar21 = (int)puVar17 - (int)param_7;" (assignment_expression "iVar21 = (int)puVar17 - (int)param_7" (identifier "iVar21") (= "=") (binary_expression "(int)puVar17 - (int)param_7" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (- "-") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (if_statement "if (iVar21 < 2) {\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }\n              else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(iVar21 < 2)" (( "(") (binary_expression "iVar21 < 2" (identifier "iVar21") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00042fe4:\n                local_7c = local_7c + 1;\n              }" ({ "{") (labeled_statement "LAB_00042fe4:\n                local_7c = local_7c + 1;" (statement_identifier "LAB_00042fe4") (: ":") (expression_statement "local_7c = local_7c + 1;" (assignment_expression "local_7c = local_7c + 1" (identifier "local_7c") (= "=") (binary_expression "local_7c + 1" (identifier "local_7c") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (else_clause "else {\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                iVar32 = *piVar28;\n                *piVar28 = iVar32 + 1;\n                if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar32 = *piVar28;" (assignment_expression "iVar32 = *piVar28" (identifier "iVar32") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "*piVar28 = iVar32 + 1;" (assignment_expression "*piVar28 = iVar32 + 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar32 + 1 == 0) {\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" (if "if") (parenthesized_expression "(iVar32 + 1 == 0)" (( "(") (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if (iVar21 == 2) goto LAB_00042fe4;\n                  iVar32 = piVar28[1];\n                  piVar28[1] = iVar32 + 1;\n                  if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }\n                }" ({ "{") (if_statement "if (iVar21 == 2) goto LAB_00042fe4;" (if "if") (parenthesized_expression "(iVar21 == 2)" (( "(") (binary_expression "iVar21 == 2" (identifier "iVar21") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00042fe4;" (goto "goto") (statement_identifier "LAB_00042fe4") (; ";"))) (expression_statement "iVar32 = piVar28[1];" (assignment_expression "iVar32 = piVar28[1]" (identifier "iVar32") (= "=") (subscript_expression "piVar28[1]" (identifier "piVar28") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar28[1] = iVar32 + 1;" (assignment_expression "piVar28[1] = iVar32 + 1" (subscript_expression "piVar28[1]" (identifier "piVar28") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar32 + 1 == 0) {\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" (if "if") (parenthesized_expression "(iVar32 + 1 == 0)" (( "(") (binary_expression "iVar32 + 1 == 0" (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar32 = 3;\n                    piVar29 = piVar28 + 2;\n                    do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);\n                  }" ({ "{") (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" (identifier "iVar32") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar29 = piVar28 + 2;" (assignment_expression "piVar29 = piVar28 + 2" (identifier "piVar29") (= "=") (binary_expression "piVar28 + 2" (identifier "piVar28") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    } while (iVar11 + 1 == 0);" (do "do") (compound_statement "{\n                      if (iVar21 == iVar32) goto LAB_00042fe4;\n                      iVar11 = *piVar29;\n                      iVar32 = iVar32 + 1;\n                      *piVar29 = iVar11 + 1;\n                      piVar29 = piVar29 + 1;\n                    }" ({ "{") (if_statement "if (iVar21 == iVar32) goto LAB_00042fe4;" (if "if") (parenthesized_expression "(iVar21 == iVar32)" (( "(") (binary_expression "iVar21 == iVar32" (identifier "iVar21") (== "==") (identifier "iVar32")) () ")")) (goto_statement "goto LAB_00042fe4;" (goto "goto") (statement_identifier "LAB_00042fe4") (; ";"))) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" (identifier "iVar11") (= "=") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar29 = iVar11 + 1;" (assignment_expression "*piVar29 = iVar11 + 1" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 1" (identifier "piVar29") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 + 1 == 0)" (( "(") (binary_expression "iVar11 + 1 == 0" (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (expression_statement "uVar26 = param_5[iVar23 - uVar27 & local_80];" (assignment_expression "uVar26 = param_5[iVar23 - uVar27 & local_80]" (identifier "uVar26") (= "=") (subscript_expression "param_5[iVar23 - uVar27 & local_80]" (identifier "param_5") ([ "[") (binary_expression "iVar23 - uVar27 & local_80" (binary_expression "iVar23 - uVar27" (identifier "iVar23") (- "-") (identifier "uVar27")) (& "&") (identifier "local_80")) (] "]"))) (; ";")) (expression_statement "param_11[param_8 * 2] = uVar27 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar27 + 1" (subscript_expression "param_11[param_8 * 2]" (identifier "param_11") ([ "[") (binary_expression "param_8 * 2" (identifier "param_8") (* "*") (number_literal "2")) (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = (uint *)(uVar26 + iVar30);" (assignment_expression "puVar18 = (uint *)(uVar26 + iVar30)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uVar26 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar26 + iVar30)" (( "(") (binary_expression "uVar26 + iVar30" (identifier "uVar26") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar21 = iVar6;" (assignment_expression "iVar21 = iVar6" (identifier "iVar21") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "puVar5 = local_84;" (assignment_expression "puVar5 = local_84" (identifier "puVar5") (= "=") (identifier "local_84")) (; ";")) (do_statement "do {\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            } while (uVar26 == uVar7);" (do "do") (compound_statement "{\n              iVar21 = iVar21 + -1;\n              if (iVar21 < 0) goto LAB_00043030;\n              uVar26 = *puVar18;\n              uVar7 = *puVar5;\n              puVar18 = puVar18 + -1;\n              puVar5 = puVar5 + -1;\n            }" ({ "{") (expression_statement "iVar21 = iVar21 + -1;" (assignment_expression "iVar21 = iVar21 + -1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar21 < 0) goto LAB_00043030;" (if "if") (parenthesized_expression "(iVar21 < 0)" (( "(") (binary_expression "iVar21 < 0" (identifier "iVar21") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043030;" (goto "goto") (statement_identifier "LAB_00043030") (; ";"))) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "uVar7 = *puVar5;" (assignment_expression "uVar7 = *puVar5" (identifier "uVar7") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + -1" (identifier "puVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar26 == uVar7)" (( "(") (binary_expression "uVar26 == uVar7" (identifier "uVar26") (== "==") (identifier "uVar7")) () ")")) (; ";")) (if_statement "if (uVar7 < uVar26) {\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" (if "if") (parenthesized_expression "(uVar7 < uVar26)" (( "(") (binary_expression "uVar7 < uVar26" (identifier "uVar7") (< "<") (identifier "uVar26")) () ")")) (compound_statement "{\n              iVar21 = *piVar24;\n              *piVar24 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n              iVar21 = *piVar33;\n              *piVar33 = iVar21 + -1;\n              if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }\n            }" ({ "{") (expression_statement "iVar21 = *piVar24;" (assignment_expression "iVar21 = *piVar24" (identifier "iVar21") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "*piVar24 = iVar21 + -1;" (assignment_expression "*piVar24 = iVar21 + -1" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar21 = (int)puVar17 + 1;\n                if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar21 = (int)puVar17 + 1;" (assignment_expression "iVar21 = (int)puVar17 + 1" (identifier "iVar21") (= "=") (binary_expression "(int)puVar17 + 1" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar21 < 2) {\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "(iVar21 < 2)" (( "(") (binary_expression "iVar21 < 2" (identifier "iVar21") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043990:\n                  local_7c = local_7c + -1;\n                }" ({ "{") (labeled_statement "LAB_00043990:\n                  local_7c = local_7c + -1;" (statement_identifier "LAB_00043990") (: ":") (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" (identifier "local_7c") (= "=") (binary_expression "local_7c + -1" (identifier "local_7c") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (else_clause "else {\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" (else "else") (compound_statement "{\n                  iVar32 = piVar24[1];\n                  piVar24[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" ({ "{") (expression_statement "iVar32 = piVar24[1];" (assignment_expression "iVar32 = piVar24[1]" (identifier "iVar32") (= "=") (subscript_expression "piVar24[1]" (identifier "piVar24") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar24[1] = iVar32 + -1;" (assignment_expression "piVar24[1] = iVar32 + -1" (subscript_expression "piVar24[1]" (identifier "piVar24") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar32 == 0)" (( "(") (binary_expression "iVar32 == 0" (identifier "iVar32") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043990;\n                    iVar32 = piVar24[2];\n                    piVar24[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" ({ "{") (if_statement "if (iVar21 == 2) goto LAB_00043990;" (if "if") (parenthesized_expression "(iVar21 == 2)" (( "(") (binary_expression "iVar21 == 2" (identifier "iVar21") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043990;" (goto "goto") (statement_identifier "LAB_00043990") (; ";"))) (expression_statement "iVar32 = piVar24[2];" (assignment_expression "iVar32 = piVar24[2]" (identifier "iVar32") (= "=") (subscript_expression "piVar24[2]" (identifier "piVar24") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar24[2] = iVar32 + -1;" (assignment_expression "piVar24[2] = iVar32 + -1" (subscript_expression "piVar24[2]" (identifier "piVar24") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" (if "if") (parenthesized_expression "(iVar32 == 0)" (( "(") (binary_expression "iVar32 == 0" (identifier "iVar32") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar24 + 3;\n                      do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" ({ "{") (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" (identifier "iVar32") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar29 = piVar24 + 3;" (assignment_expression "piVar29 = piVar24 + 3" (identifier "piVar29") (= "=") (binary_expression "piVar24 + 3" (identifier "piVar24") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" (do "do") (compound_statement "{\n                        bVar1 = iVar21 == iVar32;\n                        iVar32 = iVar32 + 1;\n                        if (bVar1) goto LAB_00043990;\n                        iVar11 = *piVar29;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" ({ "{") (expression_statement "bVar1 = iVar21 == iVar32;" (assignment_expression "bVar1 = iVar21 == iVar32" (identifier "bVar1") (= "=") (binary_expression "iVar21 == iVar32" (identifier "iVar21") (== "==") (identifier "iVar32"))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_00043990;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00043990;" (goto "goto") (statement_identifier "LAB_00043990") (; ";"))) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" (identifier "iVar11") (= "=") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (; ";")) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 1" (identifier "piVar29") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" (identifier "iVar21") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar21 + -1;" (assignment_expression "*piVar33 = iVar21 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar21 == 0) {\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar21 = local_70 + (int)puVar17;\n                if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar21 = local_70 + (int)puVar17;" (assignment_expression "iVar21 = local_70 + (int)puVar17" (identifier "iVar21") (= "=") (binary_expression "local_70 + (int)puVar17" (identifier "local_70") (+ "+") (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")))) (; ";")) (if_statement "if (iVar21 < 2) {\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }\n                else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "(iVar21 < 2)" (( "(") (binary_expression "iVar21 < 2" (identifier "iVar21") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043a18:\n                  local_7c = local_7c + -1;\n                }" ({ "{") (labeled_statement "LAB_00043a18:\n                  local_7c = local_7c + -1;" (statement_identifier "LAB_00043a18") (: ":") (expression_statement "local_7c = local_7c + -1;" (assignment_expression "local_7c = local_7c + -1" (identifier "local_7c") (= "=") (binary_expression "local_7c + -1" (identifier "local_7c") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (else_clause "else {\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" (else "else") (compound_statement "{\n                  iVar32 = piVar33[1];\n                  piVar33[1] = iVar32 + -1;\n                  if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }\n                }" ({ "{") (expression_statement "iVar32 = piVar33[1];" (assignment_expression "iVar32 = piVar33[1]" (identifier "iVar32") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar33[1] = iVar32 + -1;" (assignment_expression "piVar33[1] = iVar32 + -1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar32 == 0) {\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar32 == 0)" (( "(") (binary_expression "iVar32 == 0" (identifier "iVar32") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (iVar21 == 2) goto LAB_00043a18;\n                    iVar32 = piVar33[2];\n                    piVar33[2] = iVar32 + -1;\n                    if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }\n                  }" ({ "{") (if_statement "if (iVar21 == 2) goto LAB_00043a18;" (if "if") (parenthesized_expression "(iVar21 == 2)" (( "(") (binary_expression "iVar21 == 2" (identifier "iVar21") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043a18;" (goto "goto") (statement_identifier "LAB_00043a18") (; ";"))) (expression_statement "iVar32 = piVar33[2];" (assignment_expression "iVar32 = piVar33[2]" (identifier "iVar32") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar33[2] = iVar32 + -1;" (assignment_expression "piVar33[2] = iVar32 + -1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar32 + -1" (identifier "iVar32") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar32 == 0) {\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" (if "if") (parenthesized_expression "(iVar32 == 0)" (( "(") (binary_expression "iVar32 == 0" (identifier "iVar32") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar32 = 3;\n                      piVar29 = piVar33 + 3;\n                      do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);\n                    }" ({ "{") (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" (identifier "iVar32") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar29 = piVar33 + 3;" (assignment_expression "piVar29 = piVar33 + 3" (identifier "piVar29") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      } while (iVar11 == 0);" (do "do") (compound_statement "{\n                        if (iVar21 == iVar32) goto LAB_00043a18;\n                        iVar11 = *piVar29;\n                        iVar32 = iVar32 + 1;\n                        *piVar29 = iVar11 + -1;\n                        piVar29 = piVar29 + 1;\n                      }" ({ "{") (if_statement "if (iVar21 == iVar32) goto LAB_00043a18;" (if "if") (parenthesized_expression "(iVar21 == iVar32)" (( "(") (binary_expression "iVar21 == iVar32" (identifier "iVar21") (== "==") (identifier "iVar32")) () ")")) (goto_statement "goto LAB_00043a18;" (goto "goto") (statement_identifier "LAB_00043a18") (; ";"))) (expression_statement "iVar11 = *piVar29;" (assignment_expression "iVar11 = *piVar29" (identifier "iVar11") (= "=") (pointer_expression "*piVar29" (* "*") (identifier "piVar29"))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar29 = iVar11 + -1;" (assignment_expression "*piVar29 = iVar11 + -1" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar29 = piVar29 + 1;" (assignment_expression "piVar29 = piVar29 + 1" (identifier "piVar29") (= "=") (binary_expression "piVar29 + 1" (identifier "piVar29") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (labeled_statement "LAB_00043030:\n            uVar27 = uVar27 - 1;" (statement_identifier "LAB_00043030") (: ":") (expression_statement "uVar27 = uVar27 - 1;" (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";"))) (expression_statement "piVar24 = piVar24 + -param_8;" (assignment_expression "piVar24 = piVar24 + -param_8" (identifier "piVar24") (= "=") (binary_expression "piVar24 + -param_8" (identifier "piVar24") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "piVar28 = piVar28 + -param_8;" (assignment_expression "piVar28 = piVar28 + -param_8" (identifier "piVar28") (= "=") (binary_expression "piVar28 + -param_8" (identifier "piVar28") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "puVar17 = (uint *)((int)puVar17 + param_8);" (assignment_expression "puVar17 = (uint *)((int)puVar17 + param_8)" (identifier "puVar17") (= "=") (cast_expression "(uint *)((int)puVar17 + param_8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + param_8)" (( "(") (binary_expression "(int)puVar17 + param_8" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (identifier "param_8")) () ")")))) (; ";")) (expression_statement "piVar33 = piVar33 + -param_8;" (assignment_expression "piVar33 = piVar33 + -param_8" (identifier "piVar33") (= "=") (binary_expression "piVar33 + -param_8" (identifier "piVar33") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 != 0xffffffff)" (( "(") (binary_expression "uVar27 != 0xffffffff" (identifier "uVar27") (!= "!=") (number_literal "0xffffffff")) () ")")) (; ";")) (if_statement "if (local_7c == -1) {\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }\n          else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" (if "if") (parenthesized_expression "(local_7c == -1)" (( "(") (binary_expression "local_7c == -1" (identifier "local_7c") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            iVar6 = local_78 - param_2;\n            piVar33 = param_6 + iVar6;\n            iVar30 = *piVar33;\n            *piVar33 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }\n          }" ({ "{") (expression_statement "iVar6 = local_78 - param_2;" (assignment_expression "iVar6 = local_78 - param_2" (identifier "iVar6") (= "=") (binary_expression "local_78 - param_2" (identifier "local_78") (- "-") (identifier "param_2"))) (; ";")) (expression_statement "piVar33 = param_6 + iVar6;" (assignment_expression "piVar33 = param_6 + iVar6" (identifier "piVar33") (= "=") (binary_expression "param_6 + iVar6" (identifier "param_6") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" (identifier "iVar30") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }\n            }" ({ "{") (if_statement "if (param_2 < 2) {\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }\n              else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(param_2 < 2)" (( "(") (binary_expression "param_2 < 2" (identifier "param_2") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                piVar33 = param_6 + iVar6 + -1;\n                iVar30 = *piVar33;\n                *piVar33 = iVar30 + -1;\n                if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }\nLAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;\n              }" ({ "{") (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" (identifier "piVar33") (= "=") (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" (identifier "param_6") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" (identifier "iVar30") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((iVar30 == 0) && (param_2 == 1)) {\n                  piVar33[1] = piVar33[1] + -1;\n                }" (if "if") (parenthesized_expression "((iVar30 == 0) && (param_2 == 1))" (( "(") (binary_expression "(iVar30 == 0) && (param_2 == 1)" (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n                  piVar33[1] = piVar33[1] + -1;\n                }" ({ "{") (expression_statement "piVar33[1] = piVar33[1] + -1;" (assignment_expression "piVar33[1] = piVar33[1] + -1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar33[1] + -1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (labeled_statement "LAB_00043f0c:\n                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" (statement_identifier "LAB_00043f0c") (: ":") (expression_statement "param_6[(int)puVar25] = param_6[(int)puVar25] + -1;" (assignment_expression "param_6[(int)puVar25] = param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" (identifier "param_6") ([ "[") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (] "]")) (= "=") (binary_expression "param_6[(int)puVar25] + -1" (subscript_expression "param_6[(int)puVar25]" (identifier "param_6") ([ "[") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (] "]")) (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (else_clause "else {\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                iVar30 = piVar33[1];\n                piVar33[1] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }\n                  iVar30 = piVar33[2];\n                  piVar33[2] = iVar30 + 1;\n                  if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }\n                }" ({ "{") (if_statement "if (param_2 == 2) {\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;\n                    iVar30 = *piVar33;\n                    *piVar33 = iVar30 + -1;\n                    if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }\n                    goto LAB_00043f0c;\n                  }" ({ "{") (labeled_statement "LAB_00043ea4:\n                    piVar33 = param_6 + iVar6 + -1;" (statement_identifier "LAB_00043ea4") (: ":") (expression_statement "piVar33 = param_6 + iVar6 + -1;" (assignment_expression "piVar33 = param_6 + iVar6 + -1" (identifier "piVar33") (= "=") (binary_expression "param_6 + iVar6 + -1" (binary_expression "param_6 + iVar6" (identifier "param_6") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" (identifier "iVar30") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" (if "if") (parenthesized_expression "(((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" (( "(") (binary_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&\n                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "((iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0))" (( "(") (binary_expression "(iVar30 == 0) &&\n                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)" (( "(") (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[1]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (( "(") (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (, ",") (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n                      iVar30 = 3;\n                      piVar33 = piVar33 + 3;\n                      do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);\n                    }" ({ "{") (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      } while (iVar6 == 0);" (do "do") (compound_statement "{\n                        bVar1 = param_2 < iVar30;\n                        iVar30 = iVar30 + 1;\n                        if (bVar1) break;\n                        iVar6 = *piVar33;\n                        *piVar33 = iVar6 + -1;\n                        piVar33 = piVar33 + 1;\n                      }" ({ "{") (expression_statement "bVar1 = param_2 < iVar30;" (assignment_expression "bVar1 = param_2 < iVar30" (identifier "bVar1") (= "=") (binary_expression "param_2 < iVar30" (identifier "param_2") (< "<") (identifier "iVar30"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) break;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" (identifier "iVar6") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00043f0c;" (goto "goto") (statement_identifier "LAB_00043f0c") (; ";")) (} "}"))) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar30 = 3;\n                    piVar33 = piVar33 + 3;\n                    do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);\n                  }" ({ "{") (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    } while (iVar21 + 1 == 0);" (do "do") (compound_statement "{\n                      if (param_2 == iVar30) goto LAB_00043ea4;\n                      iVar21 = *piVar33;\n                      iVar30 = iVar30 + 1;\n                      *piVar33 = iVar21 + 1;\n                      piVar33 = piVar33 + 1;\n                    }" ({ "{") (if_statement "if (param_2 == iVar30) goto LAB_00043ea4;" (if "if") (parenthesized_expression "(param_2 == iVar30)" (( "(") (binary_expression "param_2 == iVar30" (identifier "param_2") (== "==") (identifier "iVar30")) () ")")) (goto_statement "goto LAB_00043ea4;" (goto "goto") (statement_identifier "LAB_00043ea4") (; ";"))) (expression_statement "iVar21 = *piVar33;" (assignment_expression "iVar21 = *piVar33" (identifier "iVar21") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar33 = iVar21 + 1;" (assignment_expression "*piVar33 = iVar21 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 + 1 == 0)" (( "(") (binary_expression "iVar21 + 1 == 0" (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (} "}")) (else_clause "else if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" (else "else") (if_statement "if (local_7c == 1) {\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" (if "if") (parenthesized_expression "(local_7c == 1)" (( "(") (binary_expression "local_7c == 1" (identifier "local_7c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }\n          }" ({ "{") (if_statement "if (local_78 < iVar31) {\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }\n            else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" (if "if") (parenthesized_expression "(local_78 < iVar31)" (( "(") (binary_expression "local_78 < iVar31" (identifier "local_78") (< "<") (identifier "iVar31")) () ")")) (compound_statement "{\n              piVar33 = param_6 + (local_78 - param_2);\n              iVar30 = *piVar33;\n              *piVar33 = iVar30 + -1;\n              if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }\n            }" ({ "{") (expression_statement "piVar33 = param_6 + (local_78 - param_2);" (assignment_expression "piVar33 = param_6 + (local_78 - param_2)" (identifier "piVar33") (= "=") (binary_expression "param_6 + (local_78 - param_2)" (identifier "param_6") (+ "+") (parenthesized_expression "(local_78 - param_2)" (( "(") (binary_expression "local_78 - param_2" (identifier "local_78") (- "-") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" (identifier "iVar30") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar30 + -1;" (assignment_expression "*piVar33 = iVar30 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 ) {\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" (if "if") (parenthesized_expression "(((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))\n                 )" (( "(") (binary_expression "((iVar30 == 0) && (1 < param_2)) &&\n                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" (parenthesized_expression "((iVar30 == 0) && (1 < param_2))" (( "(") (binary_expression "(iVar30 == 0) && (1 < param_2)" (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < param_2)" (( "(") (binary_expression "1 < param_2" (number_literal "1") (< "<") (identifier "param_2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))" (( "(") (parenthesized_expression "(iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))))" (( "(") (comma_expression "iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "iVar30 = piVar33[1]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "piVar33[1] = iVar30 + -1, iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (assignment_expression "piVar33[1] = iVar30 + -1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar30 == 0 &&\n                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))" (( "(") (parenthesized_expression "(param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0))" (( "(") (binary_expression "param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (binary_expression "param_2 != 2" (identifier "param_2") (!= "!=") (number_literal "2")) (&& "&&") (parenthesized_expression "(iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)" (( "(") (comma_expression "iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "iVar30 = piVar33[2]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (, ",") (comma_expression "piVar33[2] = iVar30 + -1, iVar30 == 0" (assignment_expression "piVar33[2] = iVar30 + -1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")))) () ")"))) () ")")) () ")"))))) () ")")) () ")"))) () ")")) (compound_statement "{\n                iVar30 = 3;\n                piVar33 = piVar33 + 3;\n                do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);\n              }" ({ "{") (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar33 = piVar33 + 3;" (assignment_expression "piVar33 = piVar33 + 3" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar6 == 0);" (do "do") (compound_statement "{\n                  bVar1 = param_2 == iVar30;\n                  iVar30 = iVar30 + 1;\n                  if (bVar1) break;\n                  iVar6 = *piVar33;\n                  *piVar33 = iVar6 + -1;\n                  piVar33 = piVar33 + 1;\n                }" ({ "{") (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" (identifier "bVar1") (= "=") (binary_expression "param_2 == iVar30" (identifier "param_2") (== "==") (identifier "iVar30"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) break;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" (identifier "iVar6") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar6 + -1;" (assignment_expression "*piVar33 = iVar6 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" (else "else") (compound_statement "{\n              piVar33 = param_6 + local_78 + param_2 * -2;\n              while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }\n            }" ({ "{") (expression_statement "piVar33 = param_6 + local_78 + param_2 * -2;" (assignment_expression "piVar33 = param_6 + local_78 + param_2 * -2" (identifier "piVar33") (= "=") (binary_expression "param_6 + local_78 + param_2 * -2" (binary_expression "param_6 + local_78" (identifier "param_6") (+ "+") (identifier "local_78")) (+ "+") (binary_expression "param_2 * -2" (identifier "param_2") (* "*") (number_literal "-2")))) (; ";")) (while_statement "while( true ) {\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);\n                iVar30 = piVar33[2];\n                piVar33[2] = iVar30 + 1;\n                if (iVar30 + 1 != 0) break;\n                iVar30 = 3;\n                piVar28 = piVar33 + 3;\n                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }\n              }" ({ "{") (do_statement "do {\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                } while (iVar31 == 2);" (do "do") (compound_statement "{\n                  iVar30 = *piVar33;\n                  do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);\n                  iVar30 = piVar33[1];\n                  piVar33[1] = iVar30 + 1;\n                  if (iVar30 + 1 != 0) goto LAB_00043068;\n                }" ({ "{") (expression_statement "iVar30 = *piVar33;" (assignment_expression "iVar30 = *piVar33" (identifier "iVar30") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (do_statement "do {\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  } while (iVar31 < 2);" (do "do") (compound_statement "{\n                    *piVar33 = iVar30 + 1;\n                    if (iVar30 + 1 != 0) goto LAB_00043068;\n                    iVar30 = 0;\n                  }" ({ "{") (expression_statement "*piVar33 = iVar30 + 1;" (assignment_expression "*piVar33 = iVar30 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" (if "if") (parenthesized_expression "(iVar30 + 1 != 0)" (( "(") (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043068;" (goto "goto") (statement_identifier "LAB_00043068") (; ";"))) (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" (identifier "iVar30") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar31 < 2)" (( "(") (binary_expression "iVar31 < 2" (identifier "iVar31") (< "<") (number_literal "2")) () ")")) (; ";")) (expression_statement "iVar30 = piVar33[1];" (assignment_expression "iVar30 = piVar33[1]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar33[1] = iVar30 + 1;" (assignment_expression "piVar33[1] = iVar30 + 1" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 != 0) goto LAB_00043068;" (if "if") (parenthesized_expression "(iVar30 + 1 != 0)" (( "(") (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043068;" (goto "goto") (statement_identifier "LAB_00043068") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar31 == 2)" (( "(") (binary_expression "iVar31 == 2" (identifier "iVar31") (== "==") (number_literal "2")) () ")")) (; ";")) (expression_statement "iVar30 = piVar33[2];" (assignment_expression "iVar30 = piVar33[2]" (identifier "iVar30") (= "=") (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar33[2] = iVar30 + 1;" (assignment_expression "piVar33[2] = iVar30 + 1" (subscript_expression "piVar33[2]" (identifier "piVar33") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 != 0) break;" (if "if") (parenthesized_expression "(iVar30 + 1 != 0)" (( "(") (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar28 = piVar33 + 3;" (assignment_expression "piVar28 = piVar33 + 3" (identifier "piVar28") (= "=") (binary_expression "piVar33 + 3" (identifier "piVar33") (+ "+") (number_literal "3"))) (; ";")) (while_statement "while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" (while "while") (parenthesized_expression "(bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1)" (( "(") (comma_expression "bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1" (assignment_expression "bVar1 = iVar30 != iVar31" (identifier "bVar1") (= "=") (binary_expression "iVar30 != iVar31" (identifier "iVar30") (!= "!=") (identifier "iVar31"))) (, ",") (comma_expression "iVar30 = iVar30 + 1, bVar1" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (, ",") (identifier "bVar1"))) () ")")) (compound_statement "{\n                  iVar6 = *piVar28;\n                  *piVar28 = iVar6 + 1;\n                  piVar28 = piVar28 + 1;\n                  if (iVar6 + 1 != 0) goto LAB_00043068;\n                }" ({ "{") (expression_statement "iVar6 = *piVar28;" (assignment_expression "iVar6 = *piVar28" (identifier "iVar6") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "*piVar28 = iVar6 + 1;" (assignment_expression "*piVar28 = iVar6 + 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 1" (identifier "piVar28") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 + 1 != 0) goto LAB_00043068;" (if "if") (parenthesized_expression "(iVar6 + 1 != 0)" (( "(") (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043068;" (goto "goto") (statement_identifier "LAB_00043068") (; ";"))) (} "}"))) (} "}"))) (} "}")))) (} "}"))))) (} "}"))) (labeled_statement "LAB_00043068:\n        iVar30 = local_78 + param_2 * -2;" (statement_identifier "LAB_00043068") (: ":") (expression_statement "iVar30 = local_78 + param_2 * -2;" (assignment_expression "iVar30 = local_78 + param_2 * -2" (identifier "iVar30") (= "=") (binary_expression "local_78 + param_2 * -2" (identifier "local_78") (+ "+") (binary_expression "param_2 * -2" (identifier "param_2") (* "*") (number_literal "-2")))) (; ";"))) (if_statement "if (iVar30 < 1) {\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }\n        else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" (if "if") (parenthesized_expression "(iVar30 < 1)" (( "(") (binary_expression "iVar30 < 1" (identifier "iVar30") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          iVar30 = param_2 + iVar30;\n          iVar31 = iVar31 - local_78;\n          if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }\n          param_7 = (uint *)(iVar30 * 4);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          uVar26 = *puVar25;\n          *puVar25 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }\nLAB_00043a88:\n          param_11 = (uint *)0x0;\n        }" ({ "{") (expression_statement "iVar30 = param_2 + iVar30;" (assignment_expression "iVar30 = param_2 + iVar30" (identifier "iVar30") (= "=") (binary_expression "param_2 + iVar30" (identifier "param_2") (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "iVar31 = iVar31 - local_78;" (assignment_expression "iVar31 = iVar31 - local_78" (identifier "iVar31") (= "=") (binary_expression "iVar31 - local_78" (identifier "iVar31") (- "-") (identifier "local_78"))) (; ";")) (if_statement "if (param_2 != 0) {\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = param_2 + -1;\n            iVar21 = *param_6;\n            piVar28 = param_1;\n            piVar33 = param_6;\n            if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }\n            *piVar28 = iVar21;\n          }" ({ "{") (expression_statement "iVar6 = param_2 + -1;" (assignment_expression "iVar6 = param_2 + -1" (identifier "iVar6") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar21 = *param_6;" (assignment_expression "iVar21 = *param_6" (identifier "iVar21") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (expression_statement "piVar28 = param_1;" (assignment_expression "piVar28 = param_1" (identifier "piVar28") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar33 = param_6;" (assignment_expression "piVar33 = param_6" (identifier "piVar33") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);\n              piVar28 = param_1 + param_2 + -1;\n            }" ({ "{") (do_statement "do {\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              } while (iVar6 != 0);" (do "do") (compound_statement "{\n                *piVar28 = iVar21;\n                iVar6 = iVar6 + -1;\n                iVar21 = piVar33[1];\n                piVar28 = piVar28 + 1;\n                piVar33 = piVar33 + 1;\n              }" ({ "{") (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar21 = piVar33[1];" (assignment_expression "iVar21 = piVar33[1]" (identifier "iVar21") (= "=") (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 1" (identifier "piVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar28 = param_1 + param_2 + -1;" (assignment_expression "piVar28 = param_1 + param_2 + -1" (identifier "piVar28") (= "=") (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*piVar28 = iVar21;" (assignment_expression "*piVar28 = iVar21" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (identifier "iVar21")) (; ";")) (} "}"))) (expression_statement "param_7 = (uint *)(iVar30 * 4);" (assignment_expression "param_7 = (uint *)(iVar30 * 4)" (identifier "param_7") (= "=") (cast_expression "(uint *)(iVar30 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar30 * 4)" (( "(") (binary_expression "iVar30 * 4" (identifier "iVar30") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" (identifier "uVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30)" (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 "(param_1,param_1,param_6 + param_2,iVar30)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (binary_expression "param_6 + param_2" (identifier "param_6") (+ "+") (identifier "param_2")) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" (identifier "puVar25") (= "=") (cast_expression "(uint *)(param_1 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar30)" (( "(") (binary_expression "param_1 + iVar30" (identifier "param_1") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "uVar26 = *puVar25;" (assignment_expression "uVar26 = *puVar25" (identifier "uVar26") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar26 - uVar27;" (assignment_expression "*puVar25 = uVar26 - uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            if (iVar31 < 2) goto LAB_00043184;\n            uVar27 = puVar25[1];\n            puVar25[1] = uVar27 - 1;\n            if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }\n          }" ({ "{") (if_statement "if (iVar31 < 2) goto LAB_00043184;" (if "if") (parenthesized_expression "(iVar31 < 2)" (( "(") (binary_expression "iVar31 < 2" (identifier "iVar31") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043184;" (goto "goto") (statement_identifier "LAB_00043184") (; ";"))) (expression_statement "uVar27 = puVar25[1];" (assignment_expression "uVar27 = puVar25[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 - 1;" (assignment_expression "puVar25[1] = uVar27 - 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 == 0) {\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" (if "if") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (iVar31 == 2) goto LAB_00043184;\n              uVar27 = puVar25[2];\n              puVar25[2] = uVar27 - 1;\n              if (uVar27 != 0) goto LAB_00043a88;\n              iVar30 = 3;\n              puVar25 = puVar25 + 3;\n              do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);\n              goto LAB_00043210;\n            }" ({ "{") (if_statement "if (iVar31 == 2) goto LAB_00043184;" (if "if") (parenthesized_expression "(iVar31 == 2)" (( "(") (binary_expression "iVar31 == 2" (identifier "iVar31") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043184;" (goto "goto") (statement_identifier "LAB_00043184") (; ";"))) (expression_statement "uVar27 = puVar25[2];" (assignment_expression "uVar27 = puVar25[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 - 1;" (assignment_expression "puVar25[2] = uVar27 - 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_00043a88;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00043a88;" (goto "goto") (statement_identifier "LAB_00043a88") (; ";"))) (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar25 = puVar25 + 3;" (assignment_expression "puVar25 = puVar25 + 3" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              } while (uVar27 == 0);" (do "do") (compound_statement "{\n                bVar1 = iVar31 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_00043184;\n                uVar27 = *puVar25;\n                *puVar25 = uVar27 - 1;\n                param_11 = (uint *)0x0;\n                puVar25 = puVar25 + 1;\n              }" ({ "{") (expression_statement "bVar1 = iVar31 == iVar30;" (assignment_expression "bVar1 = iVar31 == iVar30" (identifier "bVar1") (= "=") (binary_expression "iVar31 == iVar30" (identifier "iVar31") (== "==") (identifier "iVar30"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_00043184;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00043184;" (goto "goto") (statement_identifier "LAB_00043184") (; ";"))) (expression_statement "uVar27 = *puVar25;" (assignment_expression "uVar27 = *puVar25" (identifier "uVar27") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar27 - 1;" (assignment_expression "*puVar25 = uVar27 - 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" (identifier "param_11") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_00043210;" (goto "goto") (statement_identifier "LAB_00043210") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00043a88:\n          param_11 = (uint *)0x0;" (statement_identifier "LAB_00043a88") (: ":") (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" (identifier "param_11") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")) (else_clause "else {\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" (else "else") (compound_statement "{\n          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);\n          puVar17 = (uint *)(param_6 + iVar30);\n          puVar25 = (uint *)(param_1 + iVar30);\n          iVar30 = param_2 - iVar30;\n          uVar26 = *puVar17;\n          *puVar25 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }\n          param_7 = (uint *)(param_1 + param_2);\n          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);\n          uVar26 = *param_7;\n          *param_7 = uVar26 - uVar27;\n          if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }\n        }" ({ "{") (expression_statement "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" (identifier "uVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)\n                             (param_1,param_6,param_6 + param_2 * 2,iVar30)" (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_1,param_6,param_6 + param_2 * 2,iVar30)" (( "(") (identifier "param_1") (, ",") (identifier "param_6") (, ",") (binary_expression "param_6 + param_2 * 2" (identifier "param_6") (+ "+") (binary_expression "param_2 * 2" (identifier "param_2") (* "*") (number_literal "2"))) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "puVar17 = (uint *)(param_6 + iVar30);" (assignment_expression "puVar17 = (uint *)(param_6 + iVar30)" (identifier "puVar17") (= "=") (cast_expression "(uint *)(param_6 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar30)" (( "(") (binary_expression "param_6 + iVar30" (identifier "param_6") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "puVar25 = (uint *)(param_1 + iVar30);" (assignment_expression "puVar25 = (uint *)(param_1 + iVar30)" (identifier "puVar25") (= "=") (cast_expression "(uint *)(param_1 + iVar30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar30)" (( "(") (binary_expression "param_1 + iVar30" (identifier "param_1") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar30 = param_2 - iVar30;" (assignment_expression "iVar30 = param_2 - iVar30" (identifier "iVar30") (= "=") (binary_expression "param_2 - iVar30" (identifier "param_2") (- "-") (identifier "iVar30"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar25 = uVar27 + uVar26;" (assignment_expression "*puVar25 = uVar27 + uVar26" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }\n          else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }\n          }" ({ "{") (if_statement "if (iVar30 < 2) {\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }\n            else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" (if "if") (parenthesized_expression "(iVar30 < 2)" (( "(") (binary_expression "iVar30 < 2" (identifier "iVar30") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043b4c:\n              param_11 = (uint *)0x1;\n            }" ({ "{") (labeled_statement "LAB_00043b4c:\n              param_11 = (uint *)0x1;" (statement_identifier "LAB_00043b4c") (: ":") (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" (identifier "param_11") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (} "}")) (else_clause "else {\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" (else "else") (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar25[1] = uVar27 + 1;\n              if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }\n              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;\n              puVar5 = puVar17 + iVar6;\n              puVar25 = puVar25 + iVar6;\n              do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);\n              param_11 = (uint *)0x0;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar25[1] = uVar27 + 1;" (assignment_expression "puVar25[1] = uVar27 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }\n              else {\n                iVar6 = 2;\n              }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (iVar30 == 2) goto LAB_00043b4c;\n                uVar27 = puVar17[2];\n                puVar25[2] = uVar27 + 1;\n                if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }\n              }" ({ "{") (if_statement "if (iVar30 == 2) goto LAB_00043b4c;" (if "if") (parenthesized_expression "(iVar30 == 2)" (( "(") (binary_expression "iVar30 == 2" (identifier "iVar30") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043b4c;" (goto "goto") (statement_identifier "LAB_00043b4c") (; ";"))) (expression_statement "uVar27 = puVar17[2];" (assignment_expression "uVar27 = puVar17[2]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar25[2] = uVar27 + 1;" (assignment_expression "puVar25[2] = uVar27 + 1" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 + 1 == 0) {\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }\n                else {\n                  iVar6 = 3;\n                }" (if "if") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  puVar18 = puVar17 + 3;\n                  iVar6 = 3;\n                  puVar5 = puVar25 + 3;\n                  do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);\n                }" ({ "{") (expression_statement "puVar18 = puVar17 + 3;" (assignment_expression "puVar18 = puVar17 + 3" (identifier "puVar18") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" (identifier "iVar6") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar5 = puVar25 + 3;" (assignment_expression "puVar5 = puVar25 + 3" (identifier "puVar5") (= "=") (binary_expression "puVar25 + 3" (identifier "puVar25") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n                    if (iVar30 == iVar6) goto LAB_00043b4c;\n                    uVar27 = *puVar18;\n                    iVar6 = iVar6 + 1;\n                    puVar18 = puVar18 + 1;\n                    *puVar5 = uVar27 + 1;\n                    puVar5 = puVar5 + 1;\n                  }" ({ "{") (if_statement "if (iVar30 == iVar6) goto LAB_00043b4c;" (if "if") (parenthesized_expression "(iVar30 == iVar6)" (( "(") (binary_expression "iVar30 == iVar6" (identifier "iVar30") (== "==") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_00043b4c;" (goto "goto") (statement_identifier "LAB_00043b4c") (; ";"))) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = uVar27 + 1;" (assignment_expression "*puVar5 = uVar27 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n                  iVar6 = 3;\n                }" (else "else") (compound_statement "{\n                  iVar6 = 3;\n                }" ({ "{") (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" (identifier "iVar6") (= "=") (number_literal "3")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                iVar6 = 2;\n              }" (else "else") (compound_statement "{\n                iVar6 = 2;\n              }" ({ "{") (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;" (if "if") (parenthesized_expression "((puVar25 == puVar17) || (iVar30 <= iVar6))" (( "(") (binary_expression "(puVar25 == puVar17) || (iVar30 <= iVar6)" (parenthesized_expression "(puVar25 == puVar17)" (( "(") (binary_expression "puVar25 == puVar17" (identifier "puVar25") (== "==") (identifier "puVar17")) () ")")) (|| "||") (parenthesized_expression "(iVar30 <= iVar6)" (( "(") (binary_expression "iVar30 <= iVar6" (identifier "iVar30") (<= "<=") (identifier "iVar6")) () ")"))) () ")")) (goto_statement "goto LAB_00044504;" (goto "goto") (statement_identifier "LAB_00044504") (; ";"))) (expression_statement "puVar5 = puVar17 + iVar6;" (assignment_expression "puVar5 = puVar17 + iVar6" (identifier "puVar5") (= "=") (binary_expression "puVar17 + iVar6" (identifier "puVar17") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "puVar25 = puVar25 + iVar6;" (assignment_expression "puVar25 = puVar25 + iVar6" (identifier "puVar25") (= "=") (binary_expression "puVar25 + iVar6" (identifier "puVar25") (+ "+") (identifier "iVar6"))) (; ";")) (do_statement "do {\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              } while (puVar17 + iVar30 != puVar5);" (do "do") (compound_statement "{\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n                puVar25 = puVar25 + 1;\n              }" ({ "{") (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 + iVar30 != puVar5)" (( "(") (binary_expression "puVar17 + iVar30 != puVar5" (binary_expression "puVar17 + iVar30" (identifier "puVar17") (+ "+") (identifier "iVar30")) (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" (identifier "param_11") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" (else "else") (compound_statement "{\n            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }\nLAB_00044504:\n            param_11 = (uint *)0x0;\n          }" ({ "{") (if_statement "if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" (if "if") (parenthesized_expression "((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30))" (( "(") (binary_expression "(puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)" (parenthesized_expression "(puVar25 != puVar17)" (( "(") (binary_expression "puVar25 != puVar17" (identifier "puVar25") (!= "!=") (identifier "puVar17")) () ")")) (&& "&&") (parenthesized_expression "(puVar5 = puVar17 + 1, 1 < iVar30)" (( "(") (comma_expression "puVar5 = puVar17 + 1, 1 < iVar30" (assignment_expression "puVar5 = puVar17 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (, ",") (binary_expression "1 < iVar30" (number_literal "1") (< "<") (identifier "iVar30"))) () ")"))) () ")")) (compound_statement "{\n              do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);\n            }" ({ "{") (do_statement "do {\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              } while (puVar5 != puVar17 + iVar30);" (do "do") (compound_statement "{\n                puVar25 = puVar25 + 1;\n                uVar27 = *puVar5;\n                puVar5 = puVar5 + 1;\n                *puVar25 = uVar27;\n              }" ({ "{") (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 1" (identifier "puVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar25 = uVar27;" (assignment_expression "*puVar25 = uVar27" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar27")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar17 + iVar30)" (( "(") (binary_expression "puVar5 != puVar17 + iVar30" (identifier "puVar5") (!= "!=") (binary_expression "puVar17 + iVar30" (identifier "puVar17") (+ "+") (identifier "iVar30"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00044504:\n            param_11 = (uint *)0x0;" (statement_identifier "LAB_00044504") (: ":") (expression_statement "param_11 = (uint *)0x0;" (assignment_expression "param_11 = (uint *)0x0" (identifier "param_11") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")))) (expression_statement "param_7 = (uint *)(param_1 + param_2);" (assignment_expression "param_7 = (uint *)(param_1 + param_2)" (identifier "param_7") (= "=") (cast_expression "(uint *)(param_1 + param_2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + param_2)" (( "(") (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" (identifier "uVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2)" (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 "(param_1,param_1,param_6 + param_2,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (binary_expression "param_6 + param_2" (identifier "param_6") (+ "+") (identifier "param_2")) (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar26 = *param_7;" (assignment_expression "uVar26 = *param_7" (identifier "uVar26") (= "=") (pointer_expression "*param_7" (* "*") (identifier "param_7"))) (; ";")) (expression_statement "*param_7 = uVar26 - uVar27;" (assignment_expression "*param_7 = uVar26 - uVar27" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if ((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" (if "if") (parenthesized_expression "((uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff))" (( "(") (binary_expression "(uVar26 < uVar27) &&\n             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (&& "&&") (parenthesized_expression "(param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)" (( "(") (comma_expression "param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff" (assignment_expression "param_11 = (uint *)((int)param_11 + -1)" (identifier "param_11") (= "=") (cast_expression "(uint *)((int)param_11 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_11 + -1)" (( "(") (binary_expression "(int)param_11 + -1" (cast_expression "(int)param_11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_11")) (+ "+") (number_literal "-1")) () ")")))) (, ",") (binary_expression "param_11 == (uint *)0xffffffff" (identifier "param_11") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff")))) () ")"))) () ")")) (compound_statement "{\nLAB_00043184:\n            iVar30 = *param_1;\n            *param_1 = iVar30 + 1;\n            if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }\n            goto LAB_00043a88;\n          }" ({ "{") (labeled_statement "LAB_00043184:\n            iVar30 = *param_1;" (statement_identifier "LAB_00043184") (: ":") (expression_statement "iVar30 = *param_1;" (assignment_expression "iVar30 = *param_1" (identifier "iVar30") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";"))) (expression_statement "*param_1 = iVar30 + 1;" (assignment_expression "*param_1 = iVar30 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }\n              iVar30 = param_1[1];\n              param_1[1] = iVar30 + 1;\n              if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }\n            }" ({ "{") (if_statement "if (param_2 < 2) {\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" (if "if") (parenthesized_expression "(param_2 < 2)" (( "(") (binary_expression "param_2 < 2" (identifier "param_2") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00043204:\n                param_11 = (uint *)0x1;\n                goto LAB_00043210;\n              }" ({ "{") (labeled_statement "LAB_00043204:\n                param_11 = (uint *)0x1;" (statement_identifier "LAB_00043204") (: ":") (expression_statement "param_11 = (uint *)0x1;" (assignment_expression "param_11 = (uint *)0x1" (identifier "param_11") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (goto_statement "goto LAB_00043210;" (goto "goto") (statement_identifier "LAB_00043210") (; ";")) (} "}"))) (expression_statement "iVar30 = param_1[1];" (assignment_expression "iVar30 = param_1[1]" (identifier "iVar30") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = iVar30 + 1;" (assignment_expression "param_1[1] = iVar30 + 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (param_2 == 2) goto LAB_00043204;\n                iVar30 = param_1[2];\n                param_1[2] = iVar30 + 1;\n                if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }\n              }" ({ "{") (if_statement "if (param_2 == 2) goto LAB_00043204;" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00043204;" (goto "goto") (statement_identifier "LAB_00043204") (; ";"))) (expression_statement "iVar30 = param_1[2];" (assignment_expression "iVar30 = param_1[2]" (identifier "iVar30") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_1[2] = iVar30 + 1;" (assignment_expression "param_1[2] = iVar30 + 1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 == 0) {\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" (if "if") (parenthesized_expression "(iVar30 + 1 == 0)" (( "(") (binary_expression "iVar30 + 1 == 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar30 = 3;\n                  piVar33 = param_1 + 3;\n                  do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);\n                }" ({ "{") (expression_statement "iVar30 = 3;" (assignment_expression "iVar30 = 3" (identifier "iVar30") (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar33 = param_1 + 3;" (assignment_expression "piVar33 = param_1 + 3" (identifier "piVar33") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  } while (iVar6 + 1 == 0);" (do "do") (compound_statement "{\n                    bVar1 = param_2 == iVar30;\n                    iVar30 = iVar30 + 1;\n                    if (bVar1) goto LAB_00043204;\n                    iVar6 = *piVar33;\n                    *piVar33 = iVar6 + 1;\n                    piVar33 = piVar33 + 1;\n                  }" ({ "{") (expression_statement "bVar1 = param_2 == iVar30;" (assignment_expression "bVar1 = param_2 == iVar30" (identifier "bVar1") (= "=") (binary_expression "param_2 == iVar30" (identifier "param_2") (== "==") (identifier "iVar30"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_00043204;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00043204;" (goto "goto") (statement_identifier "LAB_00043204") (; ";"))) (expression_statement "iVar6 = *piVar33;" (assignment_expression "iVar6 = *piVar33" (identifier "iVar6") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar6 + 1;" (assignment_expression "*piVar33 = iVar6 + 1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 + 1 == 0)" (( "(") (binary_expression "iVar6 + 1 == 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto LAB_00043a88;" (goto "goto") (statement_identifier "LAB_00043a88") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00043210:\n        if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" (statement_identifier "LAB_00043210") (: ":") (if_statement "if (local_2c == *(int *)puVar4) {\n          return param_11;\n        }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar4)" (( "(") (binary_expression "local_2c == *(int *)puVar4" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar4" (* "*") (cast_expression "(int *)puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n          return param_11;\n        }" ({ "{") (return_statement "return param_11;" (return "return") (identifier "param_11") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (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_00045c00:\n        iVar30 = 0x230;" (statement_identifier "LAB_00045c00") (: ":") (expression_statement "iVar30 = 0x230;" (assignment_expression "iVar30 = 0x230" (identifier "iVar30") (= "=") (number_literal "0x230")) (; ";"))) (expression_statement "local_6c = (code *)0x1;" (assignment_expression "local_6c = (code *)0x1" (identifier "local_6c") (= "=") (cast_expression "(code *)0x1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "param_4 = local_84;" (assignment_expression "param_4 = local_84" (identifier "param_4") (= "=") (identifier "local_84")) (; ";")) (goto_statement "goto LAB_000427f4;" (goto "goto") (statement_identifier "LAB_000427f4") (; ";")) (} "}")))) (expression_statement "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);" (assignment_expression "uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" (identifier "uVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" (( "(") (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" (* "*") (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_fft_best_k_0009d320"))) () ")")) (argument_list "(param_7,local_6c)" (( "(") (identifier "param_7") (, ",") (identifier "local_6c") () ")")))) (; ";")) (expression_statement "iVar6 = 1 << (uVar27 & 0x1f);" (assignment_expression "iVar6 = 1 << (uVar27 & 0x1f)" (identifier "iVar6") (= "=") (binary_expression "1 << (uVar27 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "piVar33 = (int *)(iVar6 - 1U & (uint)param_7);" (assignment_expression "piVar33 = (int *)(iVar6 - 1U & (uint)param_7)" (identifier "piVar33") (= "=") (cast_expression "(int *)(iVar6 - 1U & (uint)param_7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 - 1U & (uint)param_7)" (( "(") (binary_expression "iVar6 - 1U & (uint)param_7" (binary_expression "iVar6 - 1U" (identifier "iVar6") (- "-") (number_literal "1U")) (& "&") (cast_expression "(uint)param_7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_7"))) () ")")))) (; ";")) (if_statement "if (piVar33 == (int *)0x0) {\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" (if "if") (parenthesized_expression "(piVar33 == (int *)0x0)" (( "(") (binary_expression "piVar33 == (int *)0x0" (identifier "piVar33") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar31 = iVar6;\n        if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }\n        iVar21 = (int)param_7 >> (uVar27 & 0x1f);\n        if (iVar31 == 0) {\n          trap(7);\n        }\n        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;\n        iVar32 = iVar31;\n        if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }\n        uVar26 = iVar32 >> 5;\n        if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }\n        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;\n        iVar30 = 4 << (uVar27 & 0x1f);\n        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar32 = uVar26 + 1;\n        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);\n        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);\n        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);\n        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;\n        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);\n        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));\n        iVar31 = iVar31 >> (uVar27 & 0x1f);\n        if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }\n        iVar11 = (int)param_7 * 4;\n        if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }\n        goto LAB_00042c64;\n      }" ({ "{") (expression_statement "iVar31 = iVar6;" (assignment_expression "iVar31 = iVar6" (identifier "iVar31") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 < 0x20) {\n          iVar31 = 0x20;\n        }" (if "if") (parenthesized_expression "(iVar6 < 0x20)" (( "(") (binary_expression "iVar6 < 0x20" (identifier "iVar6") (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n          iVar31 = 0x20;\n        }" ({ "{") (expression_statement "iVar31 = 0x20;" (assignment_expression "iVar31 = 0x20" (identifier "iVar31") (= "=") (number_literal "0x20")) (; ";")) (} "}"))) (expression_statement "iVar21 = (int)param_7 >> (uVar27 & 0x1f);" (assignment_expression "iVar21 = (int)param_7 >> (uVar27 & 0x1f)" (identifier "iVar21") (= "=") (binary_expression "(int)param_7 >> (uVar27 & 0x1f)" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (>> ">>") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (iVar31 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(iVar31 == 0)" (( "(") (binary_expression "iVar31 == 0" (identifier "iVar31") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31;" (assignment_expression "iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" (identifier "iVar31") (= "=") (binary_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 ) * iVar31" (parenthesized_expression "((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31\n                 )" (( "(") (binary_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31" (cast_expression "(int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31)" (( "(") (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27" (binary_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2" (parenthesized_expression "(((int)param_7 << 5) >> (uVar27 & 0x1f))" (( "(") (binary_expression "((int)param_7 << 5) >> (uVar27 & 0x1f)" (parenthesized_expression "((int)param_7 << 5)" (( "(") (binary_expression "(int)param_7 << 5" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (<< "<<") (number_literal "5")) () ")")) (>> ">>") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (* "*") (number_literal "2")) (+ "+") (identifier "uVar27")) (+ "+") (number_literal "2")) (+ "+") (identifier "iVar31")) () ")"))) (/ "/") (identifier "iVar31")) () ")")) (* "*") (identifier "iVar31"))) (; ";")) (expression_statement "iVar32 = iVar31;" (assignment_expression "iVar32 = iVar31" (identifier "iVar32") (= "=") (identifier "iVar31")) (; ";")) (if_statement "if (iVar31 < 0) {\n          iVar32 = iVar31 + 0x1f;\n        }" (if "if") (parenthesized_expression "(iVar31 < 0)" (( "(") (binary_expression "iVar31 < 0" (identifier "iVar31") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          iVar32 = iVar31 + 0x1f;\n        }" ({ "{") (expression_statement "iVar32 = iVar31 + 0x1f;" (assignment_expression "iVar32 = iVar31 + 0x1f" (identifier "iVar32") (= "=") (binary_expression "iVar31 + 0x1f" (identifier "iVar31") (+ "+") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "uVar26 = iVar32 >> 5;" (assignment_expression "uVar26 = iVar32 >> 5" (identifier "uVar26") (= "=") (binary_expression "iVar32 >> 5" (identifier "iVar32") (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (iVar30 <= (int)uVar26) {\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" (if "if") (parenthesized_expression "(iVar30 <= (int)uVar26)" (( "(") (binary_expression "iVar30 <= (int)uVar26" (identifier "iVar30") (<= "<=") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) () ")")) (compound_statement "{\n          while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }\n        }" ({ "{") (while_statement "while( true ) {\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);\n            iVar30 = 1 << (uVar7 & 0x1f);\n            if ((iVar30 - 1U & uVar26) == 0) break;\n            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;\n            iVar31 = uVar26 << 5;\n          }" ({ "{") (expression_statement "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);" (assignment_expression "uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" (identifier "uVar7") (= "=") (call_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_0009d320)" (( "(") (pointer_expression "*(code *)PTR___gmpn_fft_best_k_0009d320" (* "*") (cast_expression "(code *)PTR___gmpn_fft_best_k_0009d320" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_fft_best_k_0009d320"))) () ")")) (argument_list "(uVar26,local_6c)" (( "(") (identifier "uVar26") (, ",") (identifier "local_6c") () ")")))) (; ";")) (expression_statement "iVar30 = 1 << (uVar7 & 0x1f);" (assignment_expression "iVar30 = 1 << (uVar7 & 0x1f)" (identifier "iVar30") (= "=") (binary_expression "1 << (uVar7 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((iVar30 - 1U & uVar26) == 0) break;" (if "if") (parenthesized_expression "((iVar30 - 1U & uVar26) == 0)" (( "(") (binary_expression "(iVar30 - 1U & uVar26) == 0" (parenthesized_expression "(iVar30 - 1U & uVar26)" (( "(") (binary_expression "iVar30 - 1U & uVar26" (binary_expression "iVar30 - 1U" (identifier "iVar30") (- "-") (number_literal "1U")) (& "&") (identifier "uVar26")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar26 = -iVar30 & (uVar26 + iVar30) - 1;" (assignment_expression "uVar26 = -iVar30 & (uVar26 + iVar30) - 1" (identifier "uVar26") (= "=") (binary_expression "-iVar30 & (uVar26 + iVar30) - 1" (unary_expression "-iVar30" (- "-") (identifier "iVar30")) (& "&") (binary_expression "(uVar26 + iVar30) - 1" (parenthesized_expression "(uVar26 + iVar30)" (( "(") (binary_expression "uVar26 + iVar30" (identifier "uVar26") (+ "+") (identifier "iVar30")) () ")")) (- "-") (number_literal "1")))) (; ";")) (expression_statement "iVar31 = uVar26 << 5;" (assignment_expression "iVar31 = uVar26 << 5" (identifier "iVar31") (= "=") (binary_expression "uVar26 << 5" (identifier "uVar26") (<< "<<") (number_literal "5"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((int)param_7 <= (int)uVar26) goto LAB_00045524;" (if "if") (parenthesized_expression "((int)param_7 <= (int)uVar26)" (( "(") (binary_expression "(int)param_7 <= (int)uVar26" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (<= "<=") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) () ")")) (goto_statement "goto LAB_00045524;" (goto "goto") (statement_identifier "LAB_00045524") (; ";"))) (expression_statement "iVar30 = 4 << (uVar27 & 0x1f);" (assignment_expression "iVar30 = 4 << (uVar27 & 0x1f)" (identifier "iVar30") (= "=") (binary_expression "4 << (uVar27 & 0x1f)" (number_literal "4") (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (identifier "uVar8") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "iVar32 = uVar26 + 1;" (assignment_expression "iVar32 = uVar26 + 1" (identifier "iVar32") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (identifier "uVar9") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30)" (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_30,iVar30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar30") () ")")))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);" (assignment_expression "iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" (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_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(iVar32 * 2 << (uVar27 & 0x1f)) << 2" (parenthesized_expression "(iVar32 * 2 << (uVar27 & 0x1f))" (( "(") (binary_expression "iVar32 * 2 << (uVar27 & 0x1f)" (binary_expression "iVar32 * 2" (identifier "iVar32") (* "*") (number_literal "2")) (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8)" (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_30,iVar32 * 8)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "iVar32 * 8" (identifier "iVar32") (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;" (assignment_expression "iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" (identifier "iVar32") (= "=") (binary_expression "iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4" (identifier "iVar30") (+ "+") (binary_expression "(iVar32 << (uVar27 & 0x1f)) * 4" (parenthesized_expression "(iVar32 << (uVar27 & 0x1f))" (( "(") (binary_expression "iVar32 << (uVar27 & 0x1f)" (identifier "iVar32") (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4);" (assignment_expression "local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" (identifier "local_68") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)\n                                    (&local_30,(uVar27 + 1) * 4)" (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_30,(uVar27 + 1) * 4)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(uVar27 + 1) * 4" (parenthesized_expression "(uVar27 + 1)" (( "(") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));" (assignment_expression "iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f))" (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_30,8 << (uVar27 & 0x1f))" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "8 << (uVar27 & 0x1f)" (number_literal "8") (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar31 = iVar31 >> (uVar27 & 0x1f);" (assignment_expression "iVar31 = iVar31 >> (uVar27 & 0x1f)" (identifier "iVar31") (= "=") (binary_expression "iVar31 >> (uVar27 & 0x1f)" (identifier "iVar31") (>> ">>") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((int)uVar27 < 0) {\n          *(undefined4 *)*local_68 = 0;\n        }\n        else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" (if "if") (parenthesized_expression "((int)uVar27 < 0)" (( "(") (binary_expression "(int)uVar27 < 0" (cast_expression "(int)uVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar27")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)*local_68 = 0;\n        }" ({ "{") (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" (* "*") (cast_expression "(undefined4 *)*local_68" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_68" (* "*") (identifier "local_68")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" (else "else") (compound_statement "{\n          uVar7 = 0;\n          piVar33 = local_68;\n          do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);\n          *(undefined4 *)*local_68 = 0;\n          if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }\n        }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" (identifier "piVar33") (= "=") (identifier "local_68")) (; ";")) (do_statement "do {\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          } while (uVar27 + 1 != uVar7);" (do "do") (compound_statement "{\n            uVar2 = uVar7 & 0x1f;\n            *piVar33 = iVar11;\n            uVar7 = uVar7 + 1;\n            iVar11 = iVar11 + (4 << uVar2);\n            piVar33 = piVar33 + 1;\n          }" ({ "{") (expression_statement "uVar2 = uVar7 & 0x1f;" (assignment_expression "uVar2 = uVar7 & 0x1f" (identifier "uVar2") (= "=") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "*piVar33 = iVar11;" (assignment_expression "*piVar33 = iVar11" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = iVar11 + (4 << uVar2);" (assignment_expression "iVar11 = iVar11 + (4 << uVar2)" (identifier "iVar11") (= "=") (binary_expression "iVar11 + (4 << uVar2)" (identifier "iVar11") (+ "+") (parenthesized_expression "(4 << uVar2)" (( "(") (binary_expression "4 << uVar2" (number_literal "4") (<< "<<") (identifier "uVar2")) () ")")))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 != uVar7)" (( "(") (binary_expression "uVar27 + 1 != uVar7" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "*(undefined4 *)*local_68 = 0;" (assignment_expression "*(undefined4 *)*local_68 = 0" (pointer_expression "*(undefined4 *)*local_68" (* "*") (cast_expression "(undefined4 *)*local_68" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_68" (* "*") (identifier "local_68")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)uVar27) {\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" (if "if") (parenthesized_expression "(0 < (int)uVar27)" (( "(") (binary_expression "0 < (int)uVar27" (number_literal "0") (< "<") (cast_expression "(int)uVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar27"))) () ")")) (compound_statement "{\n            iVar11 = 1;\n            piVar33 = local_68;\n            do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);\n          }" ({ "{") (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" (identifier "iVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar33 = local_68;" (assignment_expression "piVar33 = local_68" (identifier "piVar33") (= "=") (identifier "local_68")) (; ";")) (do_statement "do {\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            } while (local_68 + uVar27 != piVar33);" (do "do") (compound_statement "{\n              piVar24 = (int *)*piVar33;\n              piVar29 = piVar24 + iVar11;\n              piVar28 = (int *)(piVar33[1] + iVar11 * 4);\n              do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);\n              piVar33 = piVar33 + 1;\n              iVar11 = iVar11 << 1;\n            }" ({ "{") (expression_statement "piVar24 = (int *)*piVar33;" (assignment_expression "piVar24 = (int *)*piVar33" (identifier "piVar24") (= "=") (cast_expression "(int *)*piVar33" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar33" (* "*") (identifier "piVar33")))) (; ";")) (expression_statement "piVar29 = piVar24 + iVar11;" (assignment_expression "piVar29 = piVar24 + iVar11" (identifier "piVar29") (= "=") (binary_expression "piVar24 + iVar11" (identifier "piVar24") (+ "+") (identifier "iVar11"))) (; ";")) (expression_statement "piVar28 = (int *)(piVar33[1] + iVar11 * 4);" (assignment_expression "piVar28 = (int *)(piVar33[1] + iVar11 * 4)" (identifier "piVar28") (= "=") (cast_expression "(int *)(piVar33[1] + iVar11 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar33[1] + iVar11 * 4)" (( "(") (binary_expression "piVar33[1] + iVar11 * 4" (subscript_expression "piVar33[1]" (identifier "piVar33") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              } while (piVar29 != piVar24);" (do "do") (compound_statement "{\n                iVar12 = *piVar24;\n                piVar24 = piVar24 + 1;\n                piVar28[-iVar11] = iVar12 * 2;\n                *piVar28 = iVar12 * 2 + 1;\n                piVar28 = piVar28 + 1;\n              }" ({ "{") (expression_statement "iVar12 = *piVar24;" (assignment_expression "iVar12 = *piVar24" (identifier "iVar12") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "piVar24 = piVar24 + 1;" (assignment_expression "piVar24 = piVar24 + 1" (identifier "piVar24") (= "=") (binary_expression "piVar24 + 1" (identifier "piVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar28[-iVar11] = iVar12 * 2;" (assignment_expression "piVar28[-iVar11] = iVar12 * 2" (subscript_expression "piVar28[-iVar11]" (identifier "piVar28") ([ "[") (unary_expression "-iVar11" (- "-") (identifier "iVar11")) (] "]")) (= "=") (binary_expression "iVar12 * 2" (identifier "iVar12") (* "*") (number_literal "2"))) (; ";")) (expression_statement "*piVar28 = iVar12 * 2 + 1;" (assignment_expression "*piVar28 = iVar12 * 2 + 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (binary_expression "iVar12 * 2 + 1" (binary_expression "iVar12 * 2" (identifier "iVar12") (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar28 = piVar28 + 1;" (assignment_expression "piVar28 = piVar28 + 1" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 1" (identifier "piVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar29 != piVar24)" (( "(") (binary_expression "piVar29 != piVar24" (identifier "piVar29") (!= "!=") (identifier "piVar24")) () ")")) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = iVar11 << 1;" (assignment_expression "iVar11 = iVar11 << 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 << 1" (identifier "iVar11") (<< "<<") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_68 + uVar27 != piVar33)" (( "(") (binary_expression "local_68 + uVar27 != piVar33" (binary_expression "local_68 + uVar27" (identifier "local_68") (+ "+") (identifier "uVar27")) (!= "!=") (identifier "piVar33")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar11 = (int)param_7 * 4;" (assignment_expression "iVar11 = (int)param_7 * 4" (identifier "iVar11") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (0 < iVar23) {\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" (if "if") (parenthesized_expression "(0 < iVar23)" (( "(") (binary_expression "0 < iVar23" (number_literal "0") (< "<") (identifier "iVar23")) () ")")) (compound_statement "{\n          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;\n          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);\n          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);\n          iVar12 = 0;\n          do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);\n        }" ({ "{") (expression_statement "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1" (identifier "iVar13") (= "=") (binary_expression "(iVar21 << (uVar27 & 0x1f)) + 1" (parenthesized_expression "(iVar21 << (uVar27 & 0x1f))" (( "(") (binary_expression "iVar21 << (uVar27 & 0x1f)" (identifier "iVar21") (<< "<<") (parenthesized_expression "(uVar27 & 0x1f)" (( "(") (binary_expression "uVar27 & 0x1f" (identifier "uVar27") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x2170)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x2170)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x2170" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x2170")) () ")")))) (; ";")) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0xd98)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0xd98)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0xd98" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0xd98")) () ")")))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          } while (iVar23 != iVar12);" (do "do") (compound_statement "{\n            puVar25 = local_84 + iVar12;\n            piVar28 = (int *)*puVar25;\n            piVar24 = piVar28 + (int)param_7;\n            piVar33 = piVar28;\n            if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }\n            if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }\n            iVar12 = iVar12 + 1;\n            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);\n            *(undefined4 *)(*puVar25 + iVar11) = uVar16;\n          }" ({ "{") (expression_statement "puVar25 = local_84 + iVar12;" (assignment_expression "puVar25 = local_84 + iVar12" (identifier "puVar25") (= "=") (binary_expression "local_84 + iVar12" (identifier "local_84") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "piVar28 = (int *)*puVar25;" (assignment_expression "piVar28 = (int *)*puVar25" (identifier "piVar28") (= "=") (cast_expression "(int *)*puVar25" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";")) (expression_statement "piVar24 = piVar28 + (int)param_7;" (assignment_expression "piVar24 = piVar28 + (int)param_7" (identifier "piVar24") (= "=") (binary_expression "piVar28 + (int)param_7" (identifier "piVar28") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "piVar33 = piVar28;" (assignment_expression "piVar33 = piVar28" (identifier "piVar33") (= "=") (identifier "piVar28")) (; ";")) (if_statement "if (*piVar24 != 0) {\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" (if "if") (parenthesized_expression "(*piVar24 != 0)" (( "(") (binary_expression "*piVar24 != 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);\n              if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }\n            }" ({ "{") (do_statement "do {\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              } while (iVar22 == 0);" (do "do") (compound_statement "{\n                iVar22 = *piVar33;\n                *piVar33 = iVar22 + -1;\n                piVar33 = piVar33 + 1;\n              }" ({ "{") (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" (identifier "iVar22") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 == 0)" (( "(") (binary_expression "iVar22 == 0" (identifier "iVar22") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*piVar24 == 0) {\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }\n              else {\n                *piVar24 = 0;\n              }" (if "if") (parenthesized_expression "(*piVar24 == 0)" (( "(") (binary_expression "*piVar24 == 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);\n                *piVar24 = 1;\n              }" ({ "{") (expression_statement "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);" (assignment_expression "piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" (identifier "piVar28") (= "=") (cast_expression "(int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11)" (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 "(piVar28,0,iVar11)" (( "(") (identifier "piVar28") (, ",") (number_literal "0") (, ",") (identifier "iVar11") () ")"))))) (; ";")) (expression_statement "*piVar24 = 1;" (assignment_expression "*piVar24 = 1" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                *piVar24 = 0;\n              }" (else "else") (compound_statement "{\n                *piVar24 = 0;\n              }" ({ "{") (expression_statement "*piVar24 = 0;" (assignment_expression "*piVar24 = 0" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_84 == param_4) {\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }\n            else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" (if "if") (parenthesized_expression "(local_84 == param_4)" (( "(") (binary_expression "local_84 == param_4" (identifier "local_84") (== "==") (identifier "param_4")) () ")")) (compound_statement "{\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n            }" ({ "{") (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (( "(") (identifier "iVar30") (, ",") (identifier "uVar8") (, ",") (identifier "iVar6") (, ",") (identifier "uVar26") (, ",") (identifier "piVar28") (, ",") (identifier "iVar13") (, ",") (identifier "iVar21") (, ",") (identifier "iVar31") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" (else "else") (compound_statement "{\n              piVar24 = (int *)param_4[iVar12];\n              piVar29 = piVar24 + (int)param_7;\n              piVar33 = piVar24;\n              if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }\n              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);\n              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);\n            }" ({ "{") (expression_statement "piVar24 = (int *)param_4[iVar12];" (assignment_expression "piVar24 = (int *)param_4[iVar12]" (identifier "piVar24") (= "=") (cast_expression "(int *)param_4[iVar12]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[iVar12]" (identifier "param_4") ([ "[") (identifier "iVar12") (] "]")))) (; ";")) (expression_statement "piVar29 = piVar24 + (int)param_7;" (assignment_expression "piVar29 = piVar24 + (int)param_7" (identifier "piVar29") (= "=") (binary_expression "piVar24 + (int)param_7" (identifier "piVar24") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "piVar33 = piVar24;" (assignment_expression "piVar33 = piVar24" (identifier "piVar33") (= "=") (identifier "piVar24")) (; ";")) (if_statement "if (*piVar29 != 0) {\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" (if "if") (parenthesized_expression "(*piVar29 != 0)" (( "(") (binary_expression "*piVar29 != 0" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);\n                if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }\n              }" ({ "{") (do_statement "do {\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                } while (iVar22 == 0);" (do "do") (compound_statement "{\n                  iVar22 = *piVar33;\n                  *piVar33 = iVar22 + -1;\n                  piVar33 = piVar33 + 1;\n                }" ({ "{") (expression_statement "iVar22 = *piVar33;" (assignment_expression "iVar22 = *piVar33" (identifier "iVar22") (= "=") (pointer_expression "*piVar33" (* "*") (identifier "piVar33"))) (; ";")) (expression_statement "*piVar33 = iVar22 + -1;" (assignment_expression "*piVar33 = iVar22 + -1" (pointer_expression "*piVar33" (* "*") (identifier "piVar33")) (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar33 = piVar33 + 1;" (assignment_expression "piVar33 = piVar33 + 1" (identifier "piVar33") (= "=") (binary_expression "piVar33 + 1" (identifier "piVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 == 0)" (( "(") (binary_expression "iVar22 == 0" (identifier "iVar22") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*piVar29 == 0) {\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }\n                else {\n                  *piVar29 = 0;\n                }" (if "if") (parenthesized_expression "(*piVar29 == 0)" (( "(") (binary_expression "*piVar29 == 0" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);\n                  *piVar29 = 1;\n                }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11)" (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 "(piVar24,0,iVar11)" (( "(") (identifier "piVar24") (, ",") (number_literal "0") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "*piVar29 = 1;" (assignment_expression "*piVar29 = 1" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                  *piVar29 = 0;\n                }" (else "else") (compound_statement "{\n                  *piVar29 = 0;\n                }" ({ "{") (expression_statement "*piVar29 = 0;" (assignment_expression "*piVar29 = 0" (pointer_expression "*piVar29" (* "*") (identifier "piVar29")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10)" (( "(") (identifier "iVar30") (, ",") (identifier "uVar8") (, ",") (identifier "iVar6") (, ",") (identifier "uVar26") (, ",") (identifier "piVar28") (, ",") (identifier "iVar13") (, ",") (identifier "iVar21") (, ",") (identifier "iVar31") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);" (call_expression "(*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10)" (( "(") (identifier "iVar32") (, ",") (identifier "uVar9") (, ",") (identifier "iVar6") (, ",") (identifier "uVar26") (, ",") (subscript_expression "param_4[iVar12]" (identifier "param_4") ([ "[") (identifier "iVar12") (] "]")) (, ",") (identifier "iVar13") (, ",") (identifier "iVar21") (, ",") (identifier "iVar31") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c);" (assignment_expression "uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" (identifier "uVar16") (= "=") (call_expression "(*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,\n                                local_68,uVar10,local_6c)" (( "(") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (, ",") (identifier "param_7") (, ",") (identifier "uVar27") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "iVar32") (, ",") (identifier "uVar26") (, ",") (identifier "iVar21") (, ",") (identifier "iVar31") (, ",") (identifier "local_68") (, ",") (identifier "uVar10") (, ",") (identifier "local_6c") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(*puVar25 + iVar11) = uVar16;" (assignment_expression "*(undefined4 *)(*puVar25 + iVar11) = uVar16" (pointer_expression "*(undefined4 *)(*puVar25 + iVar11)" (* "*") (cast_expression "(undefined4 *)(*puVar25 + iVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar25 + iVar11)" (( "(") (binary_expression "*puVar25 + iVar11" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (+ "+") (identifier "iVar11")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar23 != iVar12)" (( "(") (binary_expression "iVar23 != iVar12" (identifier "iVar23") (!= "!=") (identifier "iVar12")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00042c64;" (goto "goto") (statement_identifier "LAB_00042c64") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" (( "(") (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" (* "*") (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_assert_fail_0009d420"))) () ")")) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20)" (( "(") (binary_expression "PTR_LAB_0009d06c + 0x4d14" (identifier "PTR_LAB_0009d06c") (+ "+") (number_literal "0x4d14")) (, ",") (number_literal "0x1c1") (, ",") (binary_expression "PTR_LAB_0009d06c + 0x4d20" (identifier "PTR_LAB_0009d06c") (+ "+") (number_literal "0x4d20")) () ")"))) (; ";")) (labeled_statement "LAB_00045524:\n      (*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" (statement_identifier "LAB_00045524") (: ":") (expression_statement "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);" (call_expression "(*(code *)PTR___gmp_assert_fail_0009d420)\n                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_0009d420)" (( "(") (pointer_expression "*(code *)PTR___gmp_assert_fail_0009d420" (* "*") (cast_expression "(code *)PTR___gmp_assert_fail_0009d420" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_assert_fail_0009d420"))) () ")")) (argument_list "(PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34)" (( "(") (binary_expression "PTR_LAB_0009d06c + 0x4d14" (identifier "PTR_LAB_0009d06c") (+ "+") (number_literal "0x4d14")) (, ",") (number_literal "0x1d7") (, ",") (binary_expression "PTR_LAB_0009d06c + 0x4d34" (identifier "PTR_LAB_0009d06c") (+ "+") (number_literal "0x4d34")) () ")"))) (; ";"))) (labeled_statement "LAB_0004555c:\n      iVar30 = param_9 << 3;" (statement_identifier "LAB_0004555c") (: ":") (expression_statement "iVar30 = param_9 << 3;" (assignment_expression "iVar30 = param_9 << 3" (identifier "iVar30") (= "=") (binary_expression "param_9 << 3" (identifier "param_9") (<< "<<") (number_literal "3"))) (; ";"))) (expression_statement "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x1610)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x1610)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x1610" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x1610")) () ")")))) (; ";")) (expression_statement "piVar28 = local_68 + -2;" (assignment_expression "piVar28 = local_68 + -2" (identifier "piVar28") (= "=") (binary_expression "local_68 + -2" (identifier "local_68") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" (identifier "piVar24") (= "=") (cast_expression "(int *)local_68[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-1]" (identifier "local_68") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" (identifier "FUN_00041610") (argument_list "(param_5,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "puVar25 = param_5 + 1;" (assignment_expression "puVar25 = param_5 + 1" (identifier "puVar25") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (binary_expression "param_5 + 2" (identifier "param_5") (+ "+") (number_literal "2")) (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (if_statement "if (iVar20 < 1) {\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }\n      else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" (if "if") (parenthesized_expression "(iVar20 < 1)" (( "(") (binary_expression "iVar20 < 1" (identifier "iVar20") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n      }" ({ "{") (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (binary_expression "param_5 + 3" (identifier "param_5") (+ "+") (number_literal "3")) (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" (else "else") (compound_statement "{\n        piVar29 = piVar24 + iVar20 * 2;\n        puVar5 = param_11 + (int)param_7;\n        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);\n        puVar17 = param_5;\n        do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);\n        piVar24 = (int *)local_68[-1];\n        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);\n        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);\n        piVar28 = piVar24 + iVar20 * 2;\n        do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);\n      }" ({ "{") (expression_statement "piVar29 = piVar24 + iVar20 * 2;" (assignment_expression "piVar29 = piVar24 + iVar20 * 2" (identifier "piVar29") (= "=") (binary_expression "piVar24 + iVar20 * 2" (identifier "piVar24") (+ "+") (binary_expression "iVar20 * 2" (identifier "iVar20") (* "*") (number_literal "2")))) (; ";")) (expression_statement "puVar5 = param_11 + (int)param_7;" (assignment_expression "puVar5 = param_11 + (int)param_7" (identifier "puVar5") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (expression_statement "puVar17 = param_5;" (assignment_expression "puVar17 = param_5" (identifier "puVar17") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        } while (piVar24 != piVar29);" (do "do") (compound_statement "{\n          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);\n          puVar18 = (uint *)puVar17[2];\n          uVar27 = *puVar5;\n          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);\n          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);\n          iVar31 = iVar21 - (uVar27 + iVar6);\n          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;\n          puVar18[(int)param_7] = iVar31 + uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar18[(int)param_7];\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);\n          iVar6 = uVar27 + uVar26 + iVar6;\n          uVar27 = iVar6 - 1;\n          if (iVar6 == 0) {\n            uVar27 = 0;\n          }\n          puVar18[(int)param_7] = iVar6 - uVar27;\n          uVar26 = *puVar18;\n          *puVar18 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar17 = puVar17 + 4;\n        }" ({ "{") (expression_statement "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(param_11,puVar17[2],local_78 * *piVar24,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "local_78 * *piVar24" (identifier "local_78") (* "*") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar18 = (uint *)puVar17[2];" (assignment_expression "puVar18 = (uint *)puVar17[2]" (identifier "puVar18") (= "=") (cast_expression "(uint *)puVar17[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);" (assignment_expression "iVar21 = *(int *)(*puVar17 + (int)param_7 * 4)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(*puVar17 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar17 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar17 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar17 + (int)param_7 * 4" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,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 "(puVar18,*puVar17,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar31 = iVar21 - (uVar27 + iVar6);" (assignment_expression "iVar31 = iVar21 - (uVar27 + iVar6)" (identifier "iVar31") (= "=") (binary_expression "iVar21 - (uVar27 + iVar6)" (identifier "iVar21") (- "-") (parenthesized_expression "(uVar27 + iVar6)" (( "(") (binary_expression "uVar27 + iVar6" (identifier "uVar27") (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;" (assignment_expression "uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" (identifier "uVar27") (= "=") (binary_expression "iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21" (binary_expression "iVar31 >> 0x1f" (identifier "iVar31") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar6) - iVar21" (parenthesized_expression "(uVar27 + iVar6)" (( "(") (binary_expression "uVar27 + iVar6" (identifier "uVar27") (+ "+") (identifier "iVar6")) () ")")) (- "-") (identifier "iVar21")))) (; ";")) (expression_statement "puVar18[(int)param_7] = iVar31 + uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar31 + uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar31 + uVar27" (identifier "iVar31") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + uVar26;" (assignment_expression "*puVar18 = uVar27 + uVar26" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }\n          else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1] + 1;\n              puVar18[1] = uVar27;\n              if (uVar27 != 0) goto LAB_00045614;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1] + 1;" (assignment_expression "uVar27 = puVar18[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar18[1] + 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18[1] = uVar27;" (assignment_expression "puVar18[1] = uVar27" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_00045614;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00045614;" (goto "goto") (statement_identifier "LAB_00045614") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 + 1;" (assignment_expression "*puVar18 = uVar27 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" (else "else") (compound_statement "{\nLAB_00045614:\n            puVar18 = (uint *)*puVar17;\n          }" ({ "{") (labeled_statement "LAB_00045614:\n            puVar18 = (uint *)*puVar17;" (statement_identifier "LAB_00045614") (: ":") (expression_statement "puVar18 = (uint *)*puVar17;" (assignment_expression "puVar18 = (uint *)*puVar17" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar18[(int)param_7];" (assignment_expression "uVar27 = puVar18[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,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 "(puVar18,puVar18,param_11,param_7)" (( "(") (identifier "puVar18") (, ",") (identifier "puVar18") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar6 = uVar27 + uVar26 + iVar6;" (assignment_expression "iVar6 = uVar27 + uVar26 + iVar6" (identifier "iVar6") (= "=") (binary_expression "uVar27 + uVar26 + iVar6" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "uVar27 = iVar6 - 1;" (assignment_expression "uVar27 = iVar6 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar6 - 1" (identifier "iVar6") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar18[(int)param_7] = iVar6 - uVar27;" (assignment_expression "puVar18[(int)param_7] = iVar6 - uVar27" (subscript_expression "puVar18[(int)param_7]" (identifier "puVar18") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar6 - uVar27" (identifier "iVar6") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar18;" (assignment_expression "uVar26 = *puVar18" (identifier "uVar26") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar26 - uVar27;" (assignment_expression "*puVar18 = uVar26 - uVar27" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar18[1];\n              puVar18[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar18 = puVar18 + 2;\n              uVar27 = *puVar18;\n              *puVar18 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar18[1];" (assignment_expression "uVar27 = puVar18[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18[1] = uVar27 - 1;" (assignment_expression "puVar18[1] = uVar27 - 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = puVar18 + 2;" (assignment_expression "puVar18 = puVar18 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar18;" (assignment_expression "uVar27 = *puVar18" (identifier "uVar27") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar27 - 1;" (assignment_expression "*puVar18 = uVar27 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" (identifier "piVar24") (= "=") (binary_expression "piVar24 + 2" (identifier "piVar24") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar17 = puVar17 + 4;" (assignment_expression "puVar17 = puVar17 + 4" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 4" (identifier "puVar17") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar24 != piVar29)" (( "(") (binary_expression "piVar24 != piVar29" (identifier "piVar24") (!= "!=") (identifier "piVar29")) () ")")) (; ";")) (expression_statement "piVar24 = (int *)local_68[-1];" (assignment_expression "piVar24 = (int *)local_68[-1]" (identifier "piVar24") (= "=") (cast_expression "(int *)local_68[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_68[-1]" (identifier "local_68") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (identifier "puVar25") (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);" (call_expression "(*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11)" (( "(") (binary_expression "param_5 + 3" (identifier "param_5") (+ "+") (number_literal "3")) (, ",") (identifier "iVar20") (, ",") (identifier "piVar28") (, ",") (identifier "iVar30") (, ",") (identifier "param_7") (, ",") (number_literal "4") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "piVar28 = piVar24 + iVar20 * 2;" (assignment_expression "piVar28 = piVar24 + iVar20 * 2" (identifier "piVar28") (= "=") (binary_expression "piVar24 + iVar20 * 2" (identifier "piVar24") (+ "+") (binary_expression "iVar20 * 2" (identifier "iVar20") (* "*") (number_literal "2")))) (; ";")) (do_statement "do {\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        } while (piVar24 != piVar28);" (do "do") (compound_statement "{\n          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);\n          puVar17 = (uint *)puVar25[2];\n          uVar27 = *puVar5;\n          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);\n          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);\n          iVar6 = iVar31 - (uVar27 + iVar30);\n          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;\n          puVar17[(int)param_7] = iVar6 + uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar27 + uVar26;\n          if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }\n          uVar26 = *puVar5;\n          uVar27 = puVar17[(int)param_7];\n          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);\n          iVar30 = uVar27 + uVar26 + iVar30;\n          uVar27 = iVar30 - 1;\n          if (iVar30 == 0) {\n            uVar27 = 0;\n          }\n          puVar17[(int)param_7] = iVar30 - uVar27;\n          uVar26 = *puVar17;\n          *puVar17 = uVar26 - uVar27;\n          if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }\n          piVar24 = piVar24 + 2;\n          puVar25 = puVar25 + 4;\n        }" ({ "{") (expression_statement "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);" (call_expression "(*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(param_11,puVar25[2],local_78 * *piVar24,param_7)" (( "(") (identifier "param_11") (, ",") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "local_78 * *piVar24" (identifier "local_78") (* "*") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "puVar17 = (uint *)puVar25[2];" (assignment_expression "puVar17 = (uint *)puVar25[2]" (identifier "puVar17") (= "=") (cast_expression "(uint *)puVar25[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar27 = *puVar5;" (assignment_expression "uVar27 = *puVar5" (identifier "uVar27") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);" (assignment_expression "iVar31 = *(int *)(*puVar25 + (int)param_7 * 4)" (identifier "iVar31") (= "=") (pointer_expression "*(int *)(*puVar25 + (int)param_7 * 4)" (* "*") (cast_expression "(int *)(*puVar25 + (int)param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar25 + (int)param_7 * 4)" (( "(") (binary_expression "*puVar25 + (int)param_7 * 4" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (+ "+") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,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 "(puVar17,*puVar25,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar6 = iVar31 - (uVar27 + iVar30);" (assignment_expression "iVar6 = iVar31 - (uVar27 + iVar30)" (identifier "iVar6") (= "=") (binary_expression "iVar31 - (uVar27 + iVar30)" (identifier "iVar31") (- "-") (parenthesized_expression "(uVar27 + iVar30)" (( "(") (binary_expression "uVar27 + iVar30" (identifier "uVar27") (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;" (assignment_expression "uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" (identifier "uVar27") (= "=") (binary_expression "iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31" (binary_expression "iVar6 >> 0x1f" (identifier "iVar6") (>> ">>") (number_literal "0x1f")) (& "&") (binary_expression "(uVar27 + iVar30) - iVar31" (parenthesized_expression "(uVar27 + iVar30)" (( "(") (binary_expression "uVar27 + iVar30" (identifier "uVar27") (+ "+") (identifier "iVar30")) () ")")) (- "-") (identifier "iVar31")))) (; ";")) (expression_statement "puVar17[(int)param_7] = iVar6 + uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar6 + uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar6 + uVar27" (identifier "iVar6") (+ "+") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + uVar26;" (assignment_expression "*puVar17 = uVar27 + uVar26" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26"))) (; ";")) (if_statement "if (uVar27 + uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }\n          else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" (if "if") (parenthesized_expression "(uVar27 + uVar26 < uVar27)" (( "(") (binary_expression "uVar27 + uVar26 < uVar27" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            } while (uVar27 + 1 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1] + 1;\n              puVar17[1] = uVar27;\n              if (uVar27 != 0) goto LAB_000457d8;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 + 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1] + 1;" (assignment_expression "uVar27 = puVar17[1] + 1" (identifier "uVar27") (= "=") (binary_expression "puVar17[1] + 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17[1] = uVar27;" (assignment_expression "puVar17[1] = uVar27" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (uVar27 != 0) goto LAB_000457d8;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000457d8;" (goto "goto") (statement_identifier "LAB_000457d8") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 + 1;" (assignment_expression "*puVar17 = uVar27 + 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 + 1 == 0)" (( "(") (binary_expression "uVar27 + 1 == 0" (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";")) (} "}")) (else_clause "else {\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" (else "else") (compound_statement "{\nLAB_000457d8:\n            puVar17 = (uint *)*puVar25;\n          }" ({ "{") (labeled_statement "LAB_000457d8:\n            puVar17 = (uint *)*puVar25;" (statement_identifier "LAB_000457d8") (: ":") (expression_statement "puVar17 = (uint *)*puVar25;" (assignment_expression "puVar17 = (uint *)*puVar25" (identifier "puVar17") (= "=") (cast_expression "(uint *)*puVar25" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar25" (* "*") (identifier "puVar25")))) (; ";"))) (} "}")))) (expression_statement "uVar26 = *puVar5;" (assignment_expression "uVar26 = *puVar5" (identifier "uVar26") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar27 = puVar17[(int)param_7];" (assignment_expression "uVar27 = puVar17[(int)param_7]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]"))) (; ";")) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7)" (identifier "iVar30") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,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 "(puVar17,puVar17,param_11,param_7)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (identifier "param_11") (, ",") (identifier "param_7") () ")")))) (; ";")) (expression_statement "iVar30 = uVar27 + uVar26 + iVar30;" (assignment_expression "iVar30 = uVar27 + uVar26 + iVar30" (identifier "iVar30") (= "=") (binary_expression "uVar27 + uVar26 + iVar30" (binary_expression "uVar27 + uVar26" (identifier "uVar27") (+ "+") (identifier "uVar26")) (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "uVar27 = iVar30 - 1;" (assignment_expression "uVar27 = iVar30 - 1" (identifier "uVar27") (= "=") (binary_expression "iVar30 - 1" (identifier "iVar30") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 == 0) {\n            uVar27 = 0;\n          }" (if "if") (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar27 = 0;\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar17[(int)param_7] = iVar30 - uVar27;" (assignment_expression "puVar17[(int)param_7] = iVar30 - uVar27" (subscript_expression "puVar17[(int)param_7]" (identifier "puVar17") ([ "[") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (] "]")) (= "=") (binary_expression "iVar30 - uVar27" (identifier "iVar30") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = *puVar17;" (assignment_expression "uVar26 = *puVar17" (identifier "uVar26") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar26 - uVar27;" (assignment_expression "*puVar17 = uVar26 - uVar27" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar26 - uVar27" (identifier "uVar26") (- "-") (identifier "uVar27"))) (; ";")) (if_statement "if (uVar26 < uVar27) {\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" (if "if") (parenthesized_expression "(uVar26 < uVar27)" (( "(") (binary_expression "uVar26 < uVar27" (identifier "uVar26") (< "<") (identifier "uVar27")) () ")")) (compound_statement "{\n            do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);\n          }" ({ "{") (do_statement "do {\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            } while (uVar27 == 0);" (do "do") (compound_statement "{\n              uVar27 = puVar17[1];\n              puVar17[1] = uVar27 - 1;\n              if (uVar27 != 0) break;\n              puVar17 = puVar17 + 2;\n              uVar27 = *puVar17;\n              *puVar17 = uVar27 - 1;\n            }" ({ "{") (expression_statement "uVar27 = puVar17[1];" (assignment_expression "uVar27 = puVar17[1]" (identifier "uVar27") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar17[1] = uVar27 - 1;" (assignment_expression "puVar17[1] = uVar27 - 1" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar27 != 0) break;" (if "if") (parenthesized_expression "(uVar27 != 0)" (( "(") (binary_expression "uVar27 != 0" (identifier "uVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar27 = *puVar17;" (assignment_expression "uVar27 = *puVar17" (identifier "uVar27") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "*puVar17 = uVar27 - 1;" (assignment_expression "*puVar17 = uVar27 - 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar27 == 0)" (( "(") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar24 = piVar24 + 2;" (assignment_expression "piVar24 = piVar24 + 2" (identifier "piVar24") (= "=") (binary_expression "piVar24 + 2" (identifier "piVar24") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar25 = puVar25 + 4;" (assignment_expression "puVar25 = puVar25 + 4" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 4" (identifier "puVar25") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar24 != piVar28)" (( "(") (binary_expression "piVar24 != piVar28" (identifier "piVar24") (!= "!=") (identifier "piVar28")) () ")")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(local_7c < 1)" (( "(") (binary_expression "local_7c < 1" (identifier "local_7c") (< "<") (number_literal "1")) () ")")) (; ";"))) (expression_statement "iVar30 = (int)param_7 * 4;" (assignment_expression "iVar30 = (int)param_7 * 4" (identifier "iVar30") (= "=") (binary_expression "(int)param_7 * 4" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar17 = param_11 + (int)param_7;" (assignment_expression "puVar17 = param_11 + (int)param_7" (identifier "puVar17") (= "=") (binary_expression "param_11 + (int)param_7" (identifier "param_11") (+ "+") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")))) (; ";")) (expression_statement "local_90 = (code *)(PTR_LAB_0009d078 + 0x790);" (assignment_expression "local_90 = (code *)(PTR_LAB_0009d078 + 0x790)" (identifier "local_90") (= "=") (cast_expression "(code *)(PTR_LAB_0009d078 + 0x790)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0009d078 + 0x790)" (( "(") (binary_expression "PTR_LAB_0009d078 + 0x790" (identifier "PTR_LAB_0009d078") (+ "+") (number_literal "0x790")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (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: (identifier))))) right: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_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: (pointer_expression argument: (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: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_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: (pointer_expression argument: (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: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier))))))) (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: (identifier) right: (number_literal))) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_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: (pointer_expression argument: (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: (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: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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) (subscript_expression argument: (identifier) index: (number_literal)) (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) consequence: (compound_statement (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: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_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: (pointer_expression argument: (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: (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: (identifier)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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) (identifier) (identifier))))) alternative: (else_clause (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) (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (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) (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (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) (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (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: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier)))))) 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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (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: (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)) right: (number_literal)) right: (identifier)))) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (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: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (identifier)))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (unary_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (identifier)) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (identifier) (number_literal) (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (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) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (subscript_expression argument: (identifier) index: (identifier)) (identifier) (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (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) (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement 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))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement 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)))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (true)))))))

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

{
  bool bVar1;
  uint uVar2;
  undefined *puVar3;
  undefined *puVar4;
  uint *puVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uVar16;
  uint *puVar17;
  uint *puVar18;
  int *piVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int *piVar24;
  uint *puVar25;
  uint uVar26;
  uint uVar27;
  int *piVar28;
  int *piVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  int *piVar33;
  code *local_90;
  uint *local_84;
  uint local_80;
  int local_7c;
  int local_78;
  int local_70;
  code *local_6c;
  int *local_68;
  int *local_5c;
  int local_30;
  int local_2c;
  
  puVar4 = PTR___stack_chk_guard_0009d540;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  iVar23 = 1 << (param_3 & 0x1f);
  local_70 = param_9 * 2;
  iVar20 = iVar23 >> 2;
  local_84 = param_4;
  if (param_3 == 1) {
    puVar25 = (uint *)*param_4;
    if (param_7 == (uint *)0xffffffff) {
      iVar30 = -4;
    }
    else {
      uVar27 = *puVar25;
      puVar5 = param_7;
      puVar18 = param_11;
      puVar17 = puVar25;
      if (param_7 == (uint *)0x0) {
        iVar30 = 0;
        *param_11 = uVar27;
      }
      else {
        do {
          *puVar18 = uVar27;
          puVar5 = (uint *)((int)puVar5 + -1);
          uVar27 = puVar17[1];
          puVar18 = puVar18 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar5 != (uint *)0x0);
        iVar30 = (int)param_7 * 4;
        param_11[(int)param_7] = uVar27;
      }
    }
    iVar31 = (int)param_7 + 1;
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[1],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[1],param_11,param_4[1],iVar31);
    puVar25 = (uint *)*param_4;
    uVar27 = *(uint *)((int)puVar25 + iVar30);
    if (1 < uVar27) {
      uVar26 = *puVar25;
      uVar27 = uVar27 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 - 1;
          if (uVar27 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00042730;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 - 1;
            if (uVar27 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_00042730;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 - 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 == 0);
            }
          }
          goto LAB_00044428;
        }
LAB_00042730:
        uVar27 = 0;
      }
      else {
LAB_00044428:
        uVar27 = 1;
      }
      *(uint *)((int)puVar25 + iVar30) = uVar27;
    }
    if (iVar6 != 0) {
      puVar25 = (uint *)param_4[1];
      iVar6 = *(int *)((int)puVar25 + iVar30);
      uVar27 = *puVar25 - iVar6;
      *puVar25 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_000427cc;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_000427cc;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
          goto LAB_000444cc;
        }
LAB_000427cc:
        iVar6 = 1;
      }
      else {
LAB_000444cc:
        iVar6 = 0;
      }
      *(int *)((int)puVar25 + iVar30) = iVar6;
    }
    if (param_12 != 0) goto LAB_000427e4;
    puVar25 = (uint *)*param_5;
    if (param_7 != (uint *)0xffffffff) {
      uVar27 = *puVar25;
      puVar5 = param_11;
      puVar18 = param_7;
      puVar17 = puVar25;
      if (param_7 != (uint *)0x0) {
        do {
          *puVar5 = uVar27;
          puVar18 = (uint *)((int)puVar18 + -1);
          uVar27 = puVar17[1];
          puVar5 = puVar5 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar18 != (uint *)0x0);
        puVar5 = (uint *)((int)param_11 + iVar30);
      }
      *puVar5 = uVar27;
    }
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[1],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[1],param_11,param_5[1],iVar31);
    puVar25 = (uint *)*param_5;
    uVar27 = *(uint *)((int)puVar25 + iVar30);
    if (1 < uVar27) {
      uVar26 = *puVar25;
      uVar27 = uVar27 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if (1 < (int)param_7) {
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 - 1;
          if (uVar27 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_0004461c;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 - 1;
            if (uVar27 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar25 + 3;
              do {
                if (param_7 == puVar5) goto LAB_0004461c;
                uVar27 = *puVar17;
                puVar5 = (uint *)((int)puVar5 + 1);
                *puVar17 = uVar27 - 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 == 0);
            }
          }
          goto LAB_000446dc;
        }
LAB_0004461c:
        uVar27 = 0;
      }
      else {
LAB_000446dc:
        uVar27 = 1;
      }
      *(uint *)((int)puVar25 + iVar30) = uVar27;
    }
    if (iVar6 == 0) goto LAB_000446c4;
    puVar25 = (uint *)param_5[1];
    iVar6 = *(int *)((int)puVar25 + iVar30);
    uVar27 = *puVar25 - iVar6;
    *puVar25 = uVar27;
    if (uVar27 < (uint)-iVar6) {
      if ((int)param_7 < 2) {
LAB_000446b8:
        iVar6 = 1;
        goto LAB_000446bc;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_000446b8;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          puVar5 = (uint *)0x3;
          puVar17 = puVar25 + 3;
          do {
            if (param_7 == puVar5) goto LAB_000446b8;
            uVar27 = *puVar17;
            puVar5 = (uint *)((int)puVar5 + 1);
            *puVar17 = uVar27 + 1;
            puVar17 = puVar17 + 1;
          } while (uVar27 + 1 == 0);
        }
      }
    }
    iVar6 = 0;
LAB_000446bc:
    *(int *)((int)puVar25 + iVar30) = iVar6;
    goto LAB_000446c4;
  }
  local_68 = (int *)(param_10 + param_3 * 4);
  local_7c = iVar23 >> 1;
  local_78 = param_9 * 4;
  piVar33 = (int *)*local_68;
  if (local_7c == 2) {
    puVar25 = (uint *)*param_4;
    if (param_7 == (uint *)0xffffffff) {
      iVar30 = -4;
    }
    else {
      uVar27 = *puVar25;
      puVar5 = param_7;
      puVar18 = param_11;
      puVar17 = puVar25;
      if (param_7 == (uint *)0x0) {
        iVar30 = 0;
        *param_11 = uVar27;
      }
      else {
        do {
          *puVar18 = uVar27;
          puVar5 = (uint *)((int)puVar5 + -1);
          uVar27 = puVar17[1];
          puVar18 = puVar18 + 1;
          puVar17 = puVar17 + 1;
        } while (puVar5 != (uint *)0x0);
        iVar30 = (int)param_7 * 4;
        param_11[(int)param_7] = uVar27;
      }
    }
    iVar31 = (int)param_7 + 1;
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[2],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[2],param_11,param_4[2],iVar31);
    puVar25 = (uint *)*param_4;
    puVar17 = (uint *)((int)puVar25 + iVar30);
    if (1 < *puVar17) {
      uVar26 = *puVar25;
      uVar27 = *puVar17 - 1;
      *puVar25 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if ((int)param_7 < 2) {
LAB_0004355c:
          *puVar17 = 0;
          goto LAB_00043564;
        }
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_0004355c;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar5 = (uint *)0x3;
            puVar25 = puVar25 + 3;
            do {
              if (param_7 == puVar5) goto LAB_0004355c;
              uVar27 = *puVar25;
              puVar5 = (uint *)((int)puVar5 + 1);
              *puVar25 = uVar27 - 1;
              puVar25 = puVar25 + 1;
            } while (uVar27 == 0);
          }
        }
      }
      *puVar17 = 1;
    }
LAB_00043564:
    if (iVar6 != 0) {
      puVar25 = (uint *)param_4[2];
      piVar28 = (int *)((int)puVar25 + iVar30);
      iVar6 = *piVar28;
      uVar27 = *puVar25 - iVar6;
      *puVar25 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if ((int)param_7 < 2) {
LAB_000435f8:
          *piVar28 = 1;
          goto LAB_00043604;
        }
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_000435f8;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            puVar17 = (uint *)0x3;
            puVar25 = puVar25 + 3;
            do {
              if (param_7 == puVar17) goto LAB_000435f8;
              uVar27 = *puVar25;
              puVar17 = (uint *)((int)puVar17 + 1);
              *puVar25 = uVar27 + 1;
              puVar25 = puVar25 + 1;
            } while (uVar27 + 1 == 0);
          }
        }
      }
      *piVar28 = 0;
    }
LAB_00043604:
    puVar17 = (uint *)param_4[1];
    if (param_7 != (uint *)0xffffffff) {
      uVar27 = *puVar17;
      puVar5 = param_11;
      puVar18 = param_7;
      puVar25 = puVar17;
      if (param_7 != (uint *)0x0) {
        do {
          *puVar5 = uVar27;
          puVar18 = (uint *)((int)puVar18 + -1);
          uVar27 = puVar25[1];
          puVar5 = puVar5 + 1;
          puVar25 = puVar25 + 1;
        } while (puVar18 != (uint *)0x0);
        puVar5 = (uint *)((int)param_11 + iVar30);
      }
      *puVar5 = uVar27;
    }
    puVar25 = (uint *)((int)param_11 + iVar30);
    (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[3],iVar31);
    iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[3],param_11,param_4[3],iVar31);
    puVar17 = (uint *)param_4[1];
    puVar5 = (uint *)((int)puVar17 + iVar30);
    if (1 < *puVar5) {
      uVar26 = *puVar17;
      uVar27 = *puVar5 - 1;
      *puVar17 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        if ((int)param_7 < 2) {
LAB_00043714:
          *puVar5 = 0;
          goto LAB_0004371c;
        }
        uVar27 = puVar17[1];
        puVar17[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_00043714;
          uVar27 = puVar17[2];
          puVar17[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar18 = (uint *)0x3;
            puVar17 = puVar17 + 3;
            do {
              bVar1 = param_7 == puVar18;
              puVar18 = (uint *)((int)puVar18 + 1);
              if (bVar1) goto LAB_00043714;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
              puVar17 = puVar17 + 1;
            } while (uVar27 == 0);
          }
        }
      }
      *puVar5 = 1;
    }
LAB_0004371c:
    if (iVar6 != 0) {
      puVar17 = (uint *)param_4[3];
      piVar28 = (int *)((int)puVar17 + iVar30);
      iVar6 = *piVar28;
      uVar27 = *puVar17 - iVar6;
      *puVar17 = uVar27;
      if (uVar27 < (uint)-iVar6) {
        if ((int)param_7 < 2) {
LAB_000437ac:
          *piVar28 = 1;
          goto LAB_000437b8;
        }
        uVar27 = puVar17[1];
        puVar17[1] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_000437ac;
          uVar27 = puVar17[2];
          puVar17[2] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            puVar5 = (uint *)0x3;
            puVar17 = puVar17 + 3;
            do {
              bVar1 = param_7 == puVar5;
              puVar5 = (uint *)((int)puVar5 + 1);
              if (bVar1) goto LAB_000437ac;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
              puVar17 = puVar17 + 1;
            } while (uVar27 + 1 == 0);
          }
        }
      }
      *piVar28 = 0;
    }
  }
  else {
    piVar28 = (int *)local_68[-1];
    iVar6 = param_9 * 8;
    iVar30 = iVar23 >> 3;
    if (iVar20 == 2) {
      puVar25 = (uint *)*param_4;
      if (param_7 == (uint *)0xffffffff) {
        iVar31 = -4;
      }
      else {
        uVar27 = *puVar25;
        puVar5 = param_7;
        puVar18 = param_11;
        puVar17 = puVar25;
        if (param_7 == (uint *)0x0) {
          iVar31 = 0;
          puVar17 = param_11;
        }
        else {
          do {
            *puVar18 = uVar27;
            puVar5 = (uint *)((int)puVar5 + -1);
            uVar27 = puVar17[1];
            puVar18 = puVar18 + 1;
            puVar17 = puVar17 + 1;
          } while (puVar5 != (uint *)0x0);
          iVar31 = (int)param_7 * 4;
          puVar17 = param_11 + (int)param_7;
        }
        *puVar17 = uVar27;
      }
      iVar32 = (int)param_7 + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[4],iVar32);
      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[4],param_11,param_4[4],iVar32);
      puVar25 = (uint *)*param_4;
      uVar27 = *(uint *)((int)puVar25 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar25;
        uVar27 = uVar27 - 1;
        *puVar25 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_000423fc;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_000423fc;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 - 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_000459fc;
          }
LAB_000423fc:
          uVar27 = 0;
        }
        else {
LAB_000459fc:
          uVar27 = 1;
        }
        *(uint *)((int)puVar25 + iVar31) = uVar27;
      }
      if (iVar21 != 0) {
        puVar25 = (uint *)param_4[4];
        iVar21 = *(int *)((int)puVar25 + iVar31);
        uVar27 = *puVar25 - iVar21;
        *puVar25 = uVar27;
        if (uVar27 < (uint)-iVar21) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00042498;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 + 1;
              if (uVar27 + 1 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_00042498;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 + 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 + 1 == 0);
              }
            }
            goto LAB_00045a18;
          }
LAB_00042498:
          iVar21 = 1;
        }
        else {
LAB_00045a18:
          iVar21 = 0;
        }
        *(int *)((int)puVar25 + iVar31) = iVar21;
      }
      puVar17 = (uint *)param_4[2];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar17;
        puVar5 = param_11;
        puVar18 = param_7;
        puVar25 = puVar17;
        if (param_7 != (uint *)0x0) {
          do {
            *puVar5 = uVar27;
            puVar18 = (uint *)((int)puVar18 + -1);
            uVar27 = puVar25[1];
            puVar5 = puVar5 + 1;
            puVar25 = puVar25 + 1;
          } while (puVar18 != (uint *)0x0);
          puVar5 = (uint *)((int)param_11 + iVar31);
        }
        *puVar5 = uVar27;
      }
      puVar25 = (uint *)((int)param_11 + iVar31);
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[6],iVar32);
      iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[6],param_11,param_4[6],iVar32);
      puVar17 = (uint *)param_4[2];
      uVar27 = *(uint *)((int)puVar17 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar17;
        uVar27 = uVar27 - 1;
        *puVar17 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar17[1];
            puVar17[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_000425b4;
              uVar27 = puVar17[2];
              puVar17[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar18 = (uint *)0x3;
                puVar5 = puVar17 + 3;
                do {
                  bVar1 = param_7 == puVar18;
                  puVar18 = (uint *)((int)puVar18 + 1);
                  if (bVar1) goto LAB_000425b4;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 - 1;
                  puVar5 = puVar5 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_000459f4;
          }
LAB_000425b4:
          uVar27 = 0;
        }
        else {
LAB_000459f4:
          uVar27 = 1;
        }
        *(uint *)((int)puVar17 + iVar31) = uVar27;
      }
      if (iVar21 != 0) {
        puVar17 = (uint *)param_4[6];
        piVar24 = (int *)((int)puVar17 + iVar31);
        iVar21 = *piVar24;
        uVar27 = *puVar17 - iVar21;
        *puVar17 = uVar27;
        if (uVar27 < (uint)-iVar21) {
          if ((int)param_7 < 2) {
LAB_0004264c:
            *piVar24 = 1;
            goto LAB_000448f4;
          }
          uVar27 = puVar17[1];
          puVar17[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_0004264c;
            uVar27 = puVar17[2];
            puVar17[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar17 + 3;
              do {
                bVar1 = param_7 == puVar5;
                puVar5 = (uint *)((int)puVar5 + 1);
                if (bVar1) goto LAB_0004264c;
                uVar27 = *puVar17;
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_000448f4:
      iVar21 = 0;
      local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
      puVar17 = param_4;
      do {
        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);
        puVar5 = (uint *)puVar17[2];
        uVar27 = *puVar25;
        iVar12 = *(int *)(*puVar17 + iVar31);
        iVar32 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
        iVar11 = iVar12 - (uVar27 + iVar32);
        uVar27 = iVar11 >> 0x1f & (uVar27 + iVar32) - iVar12;
        *(uint *)((int)puVar5 + iVar31) = iVar11 + uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar27 + uVar26;
        if (uVar27 + uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1] + 1;
            puVar5[1] = uVar27;
            if (uVar27 != 0) goto LAB_00044910;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 + 1;
          } while (uVar27 + 1 == 0);
          puVar5 = (uint *)*puVar17;
        }
        else {
LAB_00044910:
          puVar5 = (uint *)*puVar17;
        }
        uVar27 = *puVar25;
        iVar32 = *(int *)((int)puVar5 + iVar31);
        iVar11 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
        iVar11 = iVar32 + uVar27 + iVar11;
        uVar27 = iVar11 - 1;
        if (iVar11 == 0) {
          uVar27 = 0;
        }
        *(int *)((int)puVar5 + iVar31) = iVar11 - uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1];
            puVar5[1] = uVar27 - 1;
            if (uVar27 != 0) break;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 - 1;
          } while (uVar27 == 0);
        }
        iVar21 = iVar21 + 1;
        piVar28 = piVar28 + 2;
        puVar17 = puVar17 + 4;
      } while (iVar21 < iVar20);
      piVar28 = (int *)local_68[-1];
      if (iVar20 != 2) {
        local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
        goto LAB_00044f40;
      }
      puVar25 = (uint *)param_4[1];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar25;
        puVar5 = param_7;
        puVar18 = param_11;
        puVar17 = puVar25;
        if (param_7 == (uint *)0x0) {
          *param_11 = uVar27;
        }
        else {
          do {
            *puVar18 = uVar27;
            puVar5 = (uint *)((int)puVar5 + -1);
            uVar27 = puVar17[1];
            puVar18 = puVar18 + 1;
            puVar17 = puVar17 + 1;
          } while (puVar5 != (uint *)0x0);
          *(uint *)((int)param_11 + iVar31) = uVar27;
        }
      }
      iVar30 = (int)param_7 + 1;
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_4[5],iVar30);
      iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[5],param_11,param_4[5],iVar30);
      puVar25 = (uint *)param_4[1];
      uVar27 = *(uint *)((int)puVar25 + iVar31);
      if (1 < uVar27) {
        uVar26 = *puVar25;
        uVar27 = uVar27 - 1;
        *puVar25 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          if (1 < (int)param_7) {
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00044bb8;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar5 = (uint *)0x3;
                puVar17 = puVar25 + 3;
                do {
                  if (param_7 == puVar5) goto LAB_00044bb8;
                  uVar27 = *puVar17;
                  puVar5 = (uint *)((int)puVar5 + 1);
                  *puVar17 = uVar27 - 1;
                  puVar17 = puVar17 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_00044e0c;
          }
LAB_00044bb8:
          uVar27 = 0;
        }
        else {
LAB_00044e0c:
          uVar27 = 1;
        }
        *(uint *)((int)puVar25 + iVar31) = uVar27;
      }
      if (iVar6 != 0) {
        puVar25 = (uint *)param_4[5];
        piVar24 = (int *)((int)puVar25 + iVar31);
        iVar6 = *piVar24;
        uVar27 = *puVar25 - iVar6;
        *puVar25 = uVar27;
        if (uVar27 < (uint)-iVar6) {
          if ((int)param_7 < 2) {
LAB_00044c54:
            *piVar24 = 1;
            goto LAB_00044c60;
          }
          uVar27 = puVar25[1];
          puVar25[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00044c54;
            uVar27 = puVar25[2];
            puVar25[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar17 = (uint *)0x3;
              puVar25 = puVar25 + 3;
              do {
                if (param_7 == puVar17) goto LAB_00044c54;
                uVar27 = *puVar25;
                puVar17 = (uint *)((int)puVar17 + 1);
                *puVar25 = uVar27 + 1;
                puVar25 = puVar25 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_00044c60:
      puVar17 = (uint *)param_4[3];
      if (param_7 != (uint *)0xffffffff) {
        uVar27 = *puVar17;
        puVar5 = param_11;
        puVar18 = param_7;
        puVar25 = puVar17;
        if (param_7 != (uint *)0x0) {
          do {
            *puVar5 = uVar27;
            puVar18 = (uint *)((int)puVar18 + -1);
            uVar27 = puVar25[1];
            puVar5 = puVar5 + 1;
            puVar25 = puVar25 + 1;
          } while (puVar18 != (uint *)0x0);
          puVar5 = (uint *)((int)param_11 + iVar31);
        }
        *puVar5 = uVar27;
      }
      puVar25 = (uint *)((int)param_11 + iVar31);
      (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_4[7],iVar30);
      iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_4[7],param_11,param_4[7],iVar30);
      puVar17 = (uint *)param_4[3];
      uVar27 = *(uint *)((int)puVar17 + iVar31);
      uVar26 = uVar27 - 1;
      if (1 < uVar27) {
        uVar27 = *puVar17;
        *puVar17 = uVar27 - uVar26;
        if (uVar27 < uVar26) {
          if (1 < (int)param_7) {
            uVar27 = puVar17[1];
            puVar17[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (param_7 == (uint *)0x2) goto LAB_00044d6c;
              uVar27 = puVar17[2];
              puVar17[2] = uVar27 - 1;
              if (uVar27 == 0) {
                puVar18 = (uint *)0x3;
                puVar5 = puVar17 + 3;
                do {
                  bVar1 = param_7 == puVar18;
                  puVar18 = (uint *)((int)puVar18 + 1);
                  if (bVar1) goto LAB_00044d6c;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 - 1;
                  puVar5 = puVar5 + 1;
                } while (uVar27 == 0);
              }
            }
            goto LAB_00045a04;
          }
LAB_00044d6c:
          uVar27 = 0;
        }
        else {
LAB_00045a04:
          uVar27 = 1;
        }
        *(uint *)((int)puVar17 + iVar31) = uVar27;
      }
      if (iVar30 != 0) {
        puVar17 = (uint *)param_4[7];
        piVar24 = (int *)((int)puVar17 + iVar31);
        iVar30 = *piVar24;
        uVar27 = *puVar17 - iVar30;
        *puVar17 = uVar27;
        if (uVar27 < (uint)-iVar30) {
          if ((int)param_7 < 2) {
LAB_00044e00:
            *piVar24 = 1;
            goto LAB_0004533c;
          }
          uVar27 = puVar17[1];
          puVar17[1] = uVar27 + 1;
          if (uVar27 + 1 == 0) {
            if (param_7 == (uint *)0x2) goto LAB_00044e00;
            uVar27 = puVar17[2];
            puVar17[2] = uVar27 + 1;
            if (uVar27 + 1 == 0) {
              puVar5 = (uint *)0x3;
              puVar17 = puVar17 + 3;
              do {
                bVar1 = param_7 == puVar5;
                puVar5 = (uint *)((int)puVar5 + 1);
                if (bVar1) goto LAB_00044e00;
                uVar27 = *puVar17;
                *puVar17 = uVar27 + 1;
                puVar17 = puVar17 + 1;
              } while (uVar27 + 1 == 0);
            }
          }
        }
        *piVar24 = 0;
      }
LAB_0004533c:
      puVar17 = param_4 + 1;
      iVar30 = 0;
      do {
        (*local_90)(param_11,puVar17[2],local_78 * *piVar28,param_7);
        puVar5 = (uint *)puVar17[2];
        uVar27 = *puVar25;
        iVar32 = *(int *)(*puVar17 + iVar31);
        iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
        iVar21 = iVar32 - (uVar27 + iVar6);
        uVar27 = iVar21 >> 0x1f & (uVar27 + iVar6) - iVar32;
        *(uint *)((int)puVar5 + iVar31) = iVar21 + uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar27 + uVar26;
        if (uVar27 + uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1] + 1;
            puVar5[1] = uVar27;
            if (uVar27 != 0) goto LAB_0004534c;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 + 1;
          } while (uVar27 + 1 == 0);
          puVar5 = (uint *)*puVar17;
        }
        else {
LAB_0004534c:
          puVar5 = (uint *)*puVar17;
        }
        uVar27 = *puVar25;
        iVar6 = *(int *)((int)puVar5 + iVar31);
        iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
        iVar21 = iVar6 + uVar27 + iVar21;
        uVar27 = iVar21 - 1;
        if (iVar21 == 0) {
          uVar27 = 0;
        }
        *(int *)((int)puVar5 + iVar31) = iVar21 - uVar27;
        uVar26 = *puVar5;
        *puVar5 = uVar26 - uVar27;
        if (uVar26 < uVar27) {
          do {
            uVar27 = puVar5[1];
            puVar5[1] = uVar27 - 1;
            if (uVar27 != 0) break;
            puVar5 = puVar5 + 2;
            uVar27 = *puVar5;
            *puVar5 = uVar27 - 1;
          } while (uVar27 == 0);
        }
        iVar30 = iVar30 + 1;
        piVar28 = piVar28 + 2;
        puVar17 = puVar17 + 4;
      } while (iVar30 < iVar20);
    }
    else {
      piVar24 = local_68 + -3;
      piVar29 = (int *)local_68[-2];
      local_6c = (code *)(PTR_LAB_0009d078 + 0x1610);
      iVar31 = param_9 << 4;
      FUN_00041610(param_4,iVar30,piVar24,iVar31,param_7,8,param_11);
      puVar25 = param_4 + 2;
      (*local_6c)(param_4 + 4,iVar30,piVar24,iVar31,param_7,8,param_11);
      if (iVar30 < 1) {
        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);
      }
      else {
        piVar19 = piVar29 + iVar30 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
        puVar17 = param_4;
        do {
          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar29,param_7);
          puVar18 = (uint *)puVar17[4];
          uVar27 = *puVar5;
          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar32 = iVar11 - (uVar27 + iVar21);
          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;
          puVar18[(int)param_7] = iVar32 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_0004333c;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_0004333c:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar21 = uVar27 + uVar26 + iVar21;
          uVar27 = iVar21 - 1;
          if (iVar21 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar21 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar17 = puVar17 + 8;
        } while (piVar29 != piVar19);
        piVar29 = (int *)local_68[-2];
        (*local_6c)(puVar25,iVar30,piVar24,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 6,iVar30,piVar24,iVar31,param_7,8,param_11);
        piVar24 = piVar29 + iVar30 * 2;
        do {
          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);
          puVar17 = (uint *)puVar25[4];
          uVar27 = *puVar5;
          iVar32 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar21 = iVar32 - (uVar27 + iVar31);
          uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
          puVar17[(int)param_7] = iVar21 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_0004478c;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_0004478c:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar31 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar31 = uVar27 + uVar26 + iVar31;
          uVar27 = iVar31 - 1;
          if (iVar31 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar31 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar25 = puVar25 + 8;
        } while (piVar29 != piVar24);
      }
      iVar31 = (int)param_7 * 4;
      if (0 < iVar20) {
        puVar25 = param_11 + (int)param_7;
        goto LAB_000448f4;
      }
      piVar28 = (int *)local_68[-1];
LAB_00044f40:
      local_5c = local_68 + -3;
      puVar17 = param_4 + 1;
      iVar31 = param_9 << 4;
      piVar24 = (int *)local_68[-2];
      (*local_6c)(puVar17,iVar30,local_5c,iVar31,param_7,8,param_11);
      (*local_6c)(param_4 + 5,iVar30,local_5c,iVar31,param_7,8,param_11);
      puVar25 = param_4 + 3;
      if (iVar30 < 1) {
        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);
      }
      else {
        piVar29 = piVar24 + iVar30 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar14 = (code *)(PTR_LAB_0009d078 + 0x790);
        do {
          (*pcVar14)(param_11,puVar17[4],iVar6 * *piVar24,param_7);
          puVar18 = (uint *)puVar17[4];
          uVar27 = *puVar5;
          iVar11 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar21 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar32 = iVar11 - (uVar27 + iVar21);
          uVar27 = iVar32 >> 0x1f & (uVar27 + iVar21) - iVar11;
          puVar18[(int)param_7] = iVar32 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_00044fe8;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_00044fe8:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar21 = uVar27 + uVar26 + iVar21;
          uVar27 = iVar21 - 1;
          if (iVar21 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar21 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar17 = puVar17 + 8;
        } while (piVar29 != piVar24);
        piVar29 = (int *)local_68[-2];
        (*local_6c)(puVar25,iVar30,local_5c,iVar31,param_7,8,param_11);
        (*local_6c)(param_4 + 7,iVar30,local_5c,iVar31,param_7,8,param_11);
        piVar24 = piVar29 + iVar30 * 2;
        do {
          (*pcVar14)(param_11,puVar25[4],iVar6 * *piVar29,param_7);
          puVar17 = (uint *)puVar25[4];
          uVar27 = *puVar5;
          iVar21 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar31 = iVar21 - (uVar27 + iVar30);
          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar30) - iVar21;
          puVar17[(int)param_7] = iVar31 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_000451c8;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_000451c8:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar30 = uVar27 + uVar26 + iVar30;
          uVar27 = iVar30 - 1;
          if (iVar30 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar30 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar29 = piVar29 + 2;
          puVar25 = puVar25 + 8;
        } while (piVar24 != piVar29);
      }
      if (0 < iVar20) {
        iVar31 = (int)param_7 * 4;
        puVar25 = param_11 + (int)param_7;
        local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
        goto LAB_0004533c;
      }
    }
    iVar30 = (int)param_7 * 4;
    if (local_7c < 1) {
      if (param_12 == 0) {
        piVar33 = (int *)*local_68;
        goto LAB_0004555c;
      }
      goto LAB_000427e4;
    }
    puVar25 = param_11 + (int)param_7;
  }
LAB_000437b8:
  iVar6 = 0;
  local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
  puVar17 = param_4;
  do {
    (*local_90)(param_11,puVar17[1],local_70 * *piVar33,param_7);
    puVar5 = (uint *)puVar17[1];
    uVar27 = *puVar25;
    iVar32 = *(int *)(*puVar17 + iVar30);
    iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar17,param_11,param_7);
    iVar21 = iVar32 - (uVar27 + iVar31);
    uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
    *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;
    uVar26 = *puVar5;
    *puVar5 = uVar27 + uVar26;
    if (uVar27 + uVar26 < uVar27) {
      do {
        uVar27 = puVar5[1] + 1;
        puVar5[1] = uVar27;
        if (uVar27 != 0) goto LAB_000437d8;
        puVar5 = puVar5 + 2;
        uVar27 = *puVar5;
        *puVar5 = uVar27 + 1;
      } while (uVar27 + 1 == 0);
      puVar5 = (uint *)*puVar17;
    }
    else {
LAB_000437d8:
      puVar5 = (uint *)*puVar17;
    }
    uVar27 = *puVar25;
    iVar31 = *(int *)((int)puVar5 + iVar30);
    iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
    iVar21 = iVar31 + uVar27 + iVar21;
    uVar27 = iVar21 - 1;
    if (iVar21 == 0) {
      uVar27 = 0;
    }
    *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;
    uVar26 = *puVar5;
    *puVar5 = uVar26 - uVar27;
    if (uVar26 < uVar27) {
      do {
        uVar27 = puVar5[1];
        puVar5[1] = uVar27 - 1;
        if (uVar27 != 0) break;
        puVar5 = puVar5 + 2;
        uVar27 = *puVar5;
        *puVar5 = uVar27 - 1;
      } while (uVar27 == 0);
    }
    iVar6 = iVar6 + 1;
    piVar33 = piVar33 + 2;
    puVar17 = puVar17 + 2;
  } while (iVar6 < local_7c);
  if (param_12 != 0) {
LAB_000427e4:
    iVar30 = 0x230;
    local_30 = 0;
    local_6c = (code *)0x1;
    goto LAB_000427f4;
  }
  piVar33 = (int *)*local_68;
  if (local_7c != 2) goto LAB_0004555c;
  puVar25 = (uint *)*param_5;
  if (param_7 != (uint *)0xffffffff) {
    uVar27 = *puVar25;
    puVar5 = param_7;
    puVar18 = param_11;
    puVar17 = puVar25;
    if (param_7 == (uint *)0x0) {
      *param_11 = uVar27;
    }
    else {
      do {
        *puVar18 = uVar27;
        puVar5 = (uint *)((int)puVar5 + -1);
        uVar27 = puVar17[1];
        puVar18 = puVar18 + 1;
        puVar17 = puVar17 + 1;
      } while (puVar5 != (uint *)0x0);
      *(uint *)((int)param_11 + iVar30) = uVar27;
    }
  }
  iVar31 = (int)param_7 + 1;
  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[2],iVar31);
  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[2],param_11,param_5[2],iVar31);
  puVar25 = (uint *)*param_5;
  puVar17 = (uint *)((int)puVar25 + iVar30);
  if (1 < *puVar17) {
    uVar26 = *puVar25;
    uVar27 = *puVar17 - 1;
    *puVar25 = uVar26 - uVar27;
    if (uVar26 < uVar27) {
      if ((int)param_7 < 2) {
LAB_00044098:
        *puVar17 = 0;
        goto LAB_000440a0;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 - 1;
      if (uVar27 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_00044098;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 - 1;
        if (uVar27 == 0) {
          puVar5 = (uint *)0x3;
          puVar25 = puVar25 + 3;
          do {
            if (param_7 == puVar5) goto LAB_00044098;
            uVar27 = *puVar25;
            puVar5 = (uint *)((int)puVar5 + 1);
            *puVar25 = uVar27 - 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 == 0);
        }
      }
    }
    *puVar17 = 1;
  }
LAB_000440a0:
  if (iVar6 != 0) {
    puVar25 = (uint *)param_5[2];
    piVar28 = (int *)((int)puVar25 + iVar30);
    iVar6 = *piVar28;
    uVar27 = *puVar25 - iVar6;
    *puVar25 = uVar27;
    if (uVar27 < (uint)-iVar6) {
      if ((int)param_7 < 2) {
LAB_00044130:
        *piVar28 = 1;
        goto LAB_0004413c;
      }
      uVar27 = puVar25[1];
      puVar25[1] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        if (param_7 == (uint *)0x2) goto LAB_00044130;
        uVar27 = puVar25[2];
        puVar25[2] = uVar27 + 1;
        if (uVar27 + 1 == 0) {
          puVar17 = (uint *)0x3;
          puVar25 = puVar25 + 3;
          do {
            bVar1 = param_7 == puVar17;
            puVar17 = (uint *)((int)puVar17 + 1);
            if (bVar1) goto LAB_00044130;
            uVar27 = *puVar25;
            *puVar25 = uVar27 + 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 + 1 == 0);
        }
      }
    }
    *piVar28 = 0;
  }
LAB_0004413c:
  puVar25 = (uint *)param_5[1];
  if (param_7 != (uint *)0xffffffff) {
    uVar27 = *puVar25;
    puVar5 = param_11;
    puVar18 = param_7;
    puVar17 = puVar25;
    if (param_7 != (uint *)0x0) {
      do {
        *puVar5 = uVar27;
        puVar18 = (uint *)((int)puVar18 + -1);
        uVar27 = puVar17[1];
        puVar5 = puVar5 + 1;
        puVar17 = puVar17 + 1;
      } while (puVar18 != (uint *)0x0);
      puVar5 = (uint *)((int)param_11 + iVar30);
    }
    *puVar5 = uVar27;
  }
  puVar17 = (uint *)((int)param_11 + iVar30);
  (*(code *)PTR___gmpn_add_n_0009d334)(puVar25,puVar25,param_5[3],iVar31);
  iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_5[3],param_11,param_5[3],iVar31);
  puVar25 = (uint *)param_5[1];
  uVar27 = *(uint *)((int)puVar25 + iVar30);
  uVar26 = uVar27 - 1;
  if (1 < uVar27) {
    uVar27 = *puVar25;
    *puVar25 = uVar27 - uVar26;
    if (uVar27 < uVar26) {
      if (1 < (int)param_7) {
        uVar27 = puVar25[1];
        puVar25[1] = uVar27 - 1;
        if (uVar27 == 0) {
          if (param_7 == (uint *)0x2) goto LAB_00044248;
          uVar27 = puVar25[2];
          puVar25[2] = uVar27 - 1;
          if (uVar27 == 0) {
            puVar18 = (uint *)0x3;
            puVar5 = puVar25 + 3;
            do {
              bVar1 = param_7 == puVar18;
              puVar18 = (uint *)((int)puVar18 + 1);
              if (bVar1) goto LAB_00044248;
              uVar27 = *puVar5;
              *puVar5 = uVar27 - 1;
              puVar5 = puVar5 + 1;
            } while (uVar27 == 0);
          }
        }
        goto LAB_00045a50;
      }
LAB_00044248:
      uVar27 = 0;
    }
    else {
LAB_00045a50:
      uVar27 = 1;
    }
    *(uint *)((int)puVar25 + iVar30) = uVar27;
  }
  if (iVar6 == 0) goto LAB_000442ec;
  puVar25 = (uint *)param_5[3];
  piVar28 = (int *)((int)puVar25 + iVar30);
  iVar6 = *piVar28;
  uVar27 = *puVar25 - iVar6;
  *puVar25 = uVar27;
  if (uVar27 < (uint)-iVar6) {
    if ((int)param_7 < 2) {
LAB_000442e0:
      *piVar28 = 1;
      goto LAB_000442ec;
    }
    uVar27 = puVar25[1];
    puVar25[1] = uVar27 + 1;
    if (uVar27 + 1 == 0) {
      if (param_7 == (uint *)0x2) goto LAB_000442e0;
      uVar27 = puVar25[2];
      puVar25[2] = uVar27 + 1;
      if (uVar27 + 1 == 0) {
        puVar5 = (uint *)0x3;
        puVar25 = puVar25 + 3;
        do {
          bVar1 = param_7 == puVar5;
          puVar5 = (uint *)((int)puVar5 + 1);
          if (bVar1) goto LAB_000442e0;
          uVar27 = *puVar25;
          *puVar25 = uVar27 + 1;
          puVar25 = puVar25 + 1;
        } while (uVar27 + 1 == 0);
      }
    }
  }
  *piVar28 = 0;
LAB_000442ec:
  do {
    iVar6 = 0;
    puVar25 = param_5;
    do {
      (*local_90)(param_11,puVar25[1],local_70 * *piVar33,param_7);
      puVar5 = (uint *)puVar25[1];
      uVar27 = *puVar17;
      iVar32 = *(int *)(*puVar25 + iVar30);
      iVar31 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar5,*puVar25,param_11,param_7);
      iVar21 = iVar32 - (uVar27 + iVar31);
      uVar27 = iVar21 >> 0x1f & (uVar27 + iVar31) - iVar32;
      *(uint *)((int)puVar5 + iVar30) = iVar21 + uVar27;
      uVar26 = *puVar5;
      *puVar5 = uVar27 + uVar26;
      if (uVar27 + uVar26 < uVar27) {
        do {
          uVar27 = puVar5[1] + 1;
          puVar5[1] = uVar27;
          if (uVar27 != 0) goto LAB_000442f4;
          puVar5 = puVar5 + 2;
          uVar27 = *puVar5;
          *puVar5 = uVar27 + 1;
        } while (uVar27 + 1 == 0);
        puVar5 = (uint *)*puVar25;
      }
      else {
LAB_000442f4:
        puVar5 = (uint *)*puVar25;
      }
      uVar27 = *puVar17;
      iVar31 = *(int *)((int)puVar5 + iVar30);
      iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar5,puVar5,param_11,param_7);
      iVar21 = iVar31 + uVar27 + iVar21;
      uVar27 = iVar21 - 1;
      if (iVar21 == 0) {
        uVar27 = 0;
      }
      *(int *)((int)puVar5 + iVar30) = iVar21 - uVar27;
      uVar26 = *puVar5;
      *puVar5 = uVar26 - uVar27;
      if (uVar26 < uVar27) {
        do {
          uVar27 = puVar5[1];
          puVar5[1] = uVar27 - 1;
          if (uVar27 != 0) break;
          puVar5 = puVar5 + 2;
          uVar27 = *puVar5;
          *puVar5 = uVar27 - 1;
        } while (uVar27 == 0);
      }
      iVar6 = iVar6 + 1;
      piVar33 = piVar33 + 2;
      puVar25 = puVar25 + 2;
    } while (iVar6 < local_7c);
LAB_000446c4:
    do {
      local_30 = 0;
      if (local_84 == param_5) goto LAB_00045c00;
      local_6c = (code *)0x0;
      iVar30 = 0x270;
      param_4 = param_5;
LAB_000427f4:
      if ((int)param_7 < iVar30) {
        puVar25 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                                    (&local_30,(int)param_7 * 8);
        puVar17 = puVar25 + (int)param_7;
        if (0 < iVar23) {
          iVar30 = 0;
          do {
            piVar33 = (int *)local_84[iVar30];
            uVar27 = param_4[iVar30];
            if (local_84 == param_4) {
              (*(code *)PTR___gmpn_sqr_0009d394)(puVar25,piVar33,param_7);
            }
            else {
              (*(code *)PTR___gmpn_mul_n_0009d364)(puVar25,uVar27,piVar33,param_7);
            }
            piVar24 = piVar33 + (int)param_7;
            piVar28 = (int *)(uVar27 + (int)param_7 * 4);
            if (*piVar24 == 0) {
              uVar27 = 0;
              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
              if (*piVar28 != 0) {
LAB_00043d3c:
                iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,piVar33,param_7);
                uVar27 = uVar27 + iVar6 + *piVar24;
                goto LAB_00043d68;
              }
            }
            else {
              uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,uVar27,param_7);
              if (*piVar28 != 0) goto LAB_00043d3c;
LAB_00043d68:
              pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
              if (((((uVar27 != 0) &&
                    (uVar26 = *puVar25, *puVar25 = uVar27 + uVar26, uVar27 + uVar26 < uVar27)) &&
                   (1 < (int)param_7 << 1)) &&
                  ((uVar27 = puVar25[1], puVar25[1] = uVar27 + 1, uVar27 + 1 == 0 &&
                   ((int)param_7 << 1 != 2)))) &&
                 (uVar27 = puVar25[2], puVar25[2] = uVar27 + 1, uVar27 + 1 == 0)) {
                puVar5 = puVar25 + 3;
                do {
                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
                  if (puVar25 + (int)param_7 * 2 == puVar5) break;
                  uVar27 = *puVar5;
                  *puVar5 = uVar27 + 1;
                  puVar5 = puVar5 + 1;
                  pcVar14 = (code *)PTR___gmpn_sub_n_0009d514;
                } while (uVar27 + 1 == 0);
              }
            }
            iVar6 = (*pcVar14)(piVar33,puVar25,puVar17,param_7);
            if ((iVar6 == 0) || (iVar6 = *piVar33, *piVar33 = iVar6 + 1, iVar6 + 1 != 0)) {
LAB_00043d00:
              iVar6 = 0;
            }
            else {
              iVar6 = 1;
              if (1 < (int)param_7) {
                iVar6 = piVar33[1];
                piVar33[1] = iVar6 + 1;
                if (iVar6 + 1 == 0) {
                  iVar6 = 1;
                  if (param_7 == (uint *)0x2) goto LAB_00043ce4;
                  iVar6 = piVar33[2];
                  piVar33[2] = iVar6 + 1;
                  if (iVar6 + 1 == 0) {
                    piVar33 = piVar33 + 3;
                    do {
                      if (piVar24 == piVar33) {
                        iVar6 = 1;
                        goto LAB_00043ce4;
                      }
                      iVar6 = *piVar33;
                      *piVar33 = iVar6 + 1;
                      piVar33 = piVar33 + 1;
                    } while (iVar6 + 1 == 0);
                  }
                }
                goto LAB_00043d00;
              }
            }
LAB_00043ce4:
            *piVar24 = iVar6;
            iVar30 = iVar30 + 1;
          } while (iVar23 != iVar30);
        }
LAB_00042c64:
        iVar30 = (int)param_7 * 4;
        if (local_30 != 0) {
          (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
        }
        iVar6 = (int)param_7 + 1;
        local_7c = iVar6 * 4;
        puVar17 = param_11 + iVar6;
        FUN_00041a80(local_84,iVar23,local_70,param_7,param_11);
        puVar3 = PTR_LAB_0009d078;
        puVar5 = puVar17 + (int)param_7;
        *param_5 = (uint)puVar17;
        FUN_00040790(puVar17,*local_84,(int)param_7 * 0x40 - param_3,param_7);
        puVar25 = puVar17;
        if (*puVar5 != 0) {
          do {
            uVar27 = *puVar25;
            *puVar25 = uVar27 - 1;
            puVar25 = puVar25 + 1;
          } while (uVar27 == 0);
          if (*puVar5 == 0) {
            if (param_7 != (uint *)0x0) {
              (*(code *)PTR_memset_0009d2e8)(puVar17,0,iVar30);
            }
            *puVar5 = 1;
          }
          else {
            *puVar5 = 0;
          }
        }
        if (1 < iVar23) {
          puVar5 = local_84 + 1;
          iVar31 = (int)param_7 * 0x40 - ((iVar23 + -1) * param_9 + param_3);
          puVar17 = (uint *)((int)local_84 + (4 << (param_3 & 0x1f)));
          puVar25 = param_5;
          do {
            puVar25 = puVar25 + 1;
            piVar24 = (int *)puVar5[-1];
            *puVar25 = (uint)piVar24;
            piVar28 = piVar24 + (int)param_7;
            (*(code *)(puVar3 + 0x790))(piVar24,*puVar5,iVar31,param_7);
            piVar33 = piVar24;
            if (*piVar28 != 0) {
              do {
                iVar21 = *piVar33;
                *piVar33 = iVar21 + -1;
                piVar33 = piVar33 + 1;
              } while (iVar21 == 0);
              if (*piVar28 == 0) {
                if (param_7 != (uint *)0x0) {
                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar30);
                }
                *piVar28 = 1;
              }
              else {
                *piVar28 = 0;
              }
            }
            puVar5 = puVar5 + 1;
            iVar31 = iVar31 + param_9;
            local_84 = param_11;
          } while (puVar17 != puVar5);
        }
        local_80 = iVar23 - 1;
        if (param_7 != (uint *)0xffffffff) {
          (*(code *)PTR_memset_0009d2e8)(param_11,0,iVar6 * 4);
        }
        iVar21 = local_80 * param_8;
        iVar31 = param_2 * 2;
        puVar25 = (uint *)((int)param_7 + iVar21);
        local_78 = (int)puVar25 + 1;
        if (local_78 == 0) {
          puVar17 = (uint *)0xffffffff;
        }
        else {
          (*(code *)PTR_memset_0009d2e8)(param_6,0,local_78 * 4);
          puVar17 = puVar25;
        }
        if (-1 < (int)local_80) {
          local_7c = 0;
          local_70 = (iVar21 + 1) - (int)puVar17;
          piVar24 = param_6 + iVar21;
          piVar28 = param_6 + iVar6 + iVar21 + 1;
          piVar33 = param_6 + (int)puVar17;
          local_84 = param_11 + (int)param_7;
          puVar17 = param_7;
          uVar27 = local_80;
          do {
            iVar21 = (*(code *)PTR___gmpn_add_n_0009d334)
                               (piVar24,piVar24,param_5[iVar23 - uVar27 & local_80],iVar6);
            if ((iVar21 != 0) && (iVar21 = piVar28[-1], piVar28[-1] = iVar21 + 1, iVar21 + 1 == 0))
            {
              iVar21 = (int)puVar17 - (int)param_7;
              if (iVar21 < 2) {
LAB_00042fe4:
                local_7c = local_7c + 1;
              }
              else {
                iVar32 = *piVar28;
                *piVar28 = iVar32 + 1;
                if (iVar32 + 1 == 0) {
                  if (iVar21 == 2) goto LAB_00042fe4;
                  iVar32 = piVar28[1];
                  piVar28[1] = iVar32 + 1;
                  if (iVar32 + 1 == 0) {
                    iVar32 = 3;
                    piVar29 = piVar28 + 2;
                    do {
                      if (iVar21 == iVar32) goto LAB_00042fe4;
                      iVar11 = *piVar29;
                      iVar32 = iVar32 + 1;
                      *piVar29 = iVar11 + 1;
                      piVar29 = piVar29 + 1;
                    } while (iVar11 + 1 == 0);
                  }
                }
              }
            }
            uVar26 = param_5[iVar23 - uVar27 & local_80];
            param_11[param_8 * 2] = uVar27 + 1;
            puVar18 = (uint *)(uVar26 + iVar30);
            iVar21 = iVar6;
            puVar5 = local_84;
            do {
              iVar21 = iVar21 + -1;
              if (iVar21 < 0) goto LAB_00043030;
              uVar26 = *puVar18;
              uVar7 = *puVar5;
              puVar18 = puVar18 + -1;
              puVar5 = puVar5 + -1;
            } while (uVar26 == uVar7);
            if (uVar7 < uVar26) {
              iVar21 = *piVar24;
              *piVar24 = iVar21 + -1;
              if (iVar21 == 0) {
                iVar21 = (int)puVar17 + 1;
                if (iVar21 < 2) {
LAB_00043990:
                  local_7c = local_7c + -1;
                }
                else {
                  iVar32 = piVar24[1];
                  piVar24[1] = iVar32 + -1;
                  if (iVar32 == 0) {
                    if (iVar21 == 2) goto LAB_00043990;
                    iVar32 = piVar24[2];
                    piVar24[2] = iVar32 + -1;
                    if (iVar32 == 0) {
                      iVar32 = 3;
                      piVar29 = piVar24 + 3;
                      do {
                        bVar1 = iVar21 == iVar32;
                        iVar32 = iVar32 + 1;
                        if (bVar1) goto LAB_00043990;
                        iVar11 = *piVar29;
                        *piVar29 = iVar11 + -1;
                        piVar29 = piVar29 + 1;
                      } while (iVar11 == 0);
                    }
                  }
                }
              }
              iVar21 = *piVar33;
              *piVar33 = iVar21 + -1;
              if (iVar21 == 0) {
                iVar21 = local_70 + (int)puVar17;
                if (iVar21 < 2) {
LAB_00043a18:
                  local_7c = local_7c + -1;
                }
                else {
                  iVar32 = piVar33[1];
                  piVar33[1] = iVar32 + -1;
                  if (iVar32 == 0) {
                    if (iVar21 == 2) goto LAB_00043a18;
                    iVar32 = piVar33[2];
                    piVar33[2] = iVar32 + -1;
                    if (iVar32 == 0) {
                      iVar32 = 3;
                      piVar29 = piVar33 + 3;
                      do {
                        if (iVar21 == iVar32) goto LAB_00043a18;
                        iVar11 = *piVar29;
                        iVar32 = iVar32 + 1;
                        *piVar29 = iVar11 + -1;
                        piVar29 = piVar29 + 1;
                      } while (iVar11 == 0);
                    }
                  }
                }
              }
            }
LAB_00043030:
            uVar27 = uVar27 - 1;
            piVar24 = piVar24 + -param_8;
            piVar28 = piVar28 + -param_8;
            puVar17 = (uint *)((int)puVar17 + param_8);
            piVar33 = piVar33 + -param_8;
          } while (uVar27 != 0xffffffff);
          if (local_7c == -1) {
            iVar6 = local_78 - param_2;
            piVar33 = param_6 + iVar6;
            iVar30 = *piVar33;
            *piVar33 = iVar30 + 1;
            if (iVar30 + 1 == 0) {
              if (param_2 < 2) {
                piVar33 = param_6 + iVar6 + -1;
                iVar30 = *piVar33;
                *piVar33 = iVar30 + -1;
                if ((iVar30 == 0) && (param_2 == 1)) {
                  piVar33[1] = piVar33[1] + -1;
                }
LAB_00043f0c:
                param_6[(int)puVar25] = param_6[(int)puVar25] + -1;
              }
              else {
                iVar30 = piVar33[1];
                piVar33[1] = iVar30 + 1;
                if (iVar30 + 1 == 0) {
                  if (param_2 == 2) {
LAB_00043ea4:
                    piVar33 = param_6 + iVar6 + -1;
                    iVar30 = *piVar33;
                    *piVar33 = iVar30 + -1;
                    if (((iVar30 == 0) &&
                        (iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0)) &&
                       (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)) {
                      iVar30 = 3;
                      piVar33 = piVar33 + 3;
                      do {
                        bVar1 = param_2 < iVar30;
                        iVar30 = iVar30 + 1;
                        if (bVar1) break;
                        iVar6 = *piVar33;
                        *piVar33 = iVar6 + -1;
                        piVar33 = piVar33 + 1;
                      } while (iVar6 == 0);
                    }
                    goto LAB_00043f0c;
                  }
                  iVar30 = piVar33[2];
                  piVar33[2] = iVar30 + 1;
                  if (iVar30 + 1 == 0) {
                    iVar30 = 3;
                    piVar33 = piVar33 + 3;
                    do {
                      if (param_2 == iVar30) goto LAB_00043ea4;
                      iVar21 = *piVar33;
                      iVar30 = iVar30 + 1;
                      *piVar33 = iVar21 + 1;
                      piVar33 = piVar33 + 1;
                    } while (iVar21 + 1 == 0);
                  }
                }
              }
            }
          }
          else if (local_7c == 1) {
            if (local_78 < iVar31) {
              piVar33 = param_6 + (local_78 - param_2);
              iVar30 = *piVar33;
              *piVar33 = iVar30 + -1;
              if (((iVar30 == 0) && (1 < param_2)) &&
                 ((iVar30 = piVar33[1], piVar33[1] = iVar30 + -1, iVar30 == 0 &&
                  ((param_2 != 2 && (iVar30 = piVar33[2], piVar33[2] = iVar30 + -1, iVar30 == 0)))))
                 ) {
                iVar30 = 3;
                piVar33 = piVar33 + 3;
                do {
                  bVar1 = param_2 == iVar30;
                  iVar30 = iVar30 + 1;
                  if (bVar1) break;
                  iVar6 = *piVar33;
                  *piVar33 = iVar6 + -1;
                  piVar33 = piVar33 + 1;
                } while (iVar6 == 0);
              }
            }
            else {
              piVar33 = param_6 + local_78 + param_2 * -2;
              while( true ) {
                do {
                  iVar30 = *piVar33;
                  do {
                    *piVar33 = iVar30 + 1;
                    if (iVar30 + 1 != 0) goto LAB_00043068;
                    iVar30 = 0;
                  } while (iVar31 < 2);
                  iVar30 = piVar33[1];
                  piVar33[1] = iVar30 + 1;
                  if (iVar30 + 1 != 0) goto LAB_00043068;
                } while (iVar31 == 2);
                iVar30 = piVar33[2];
                piVar33[2] = iVar30 + 1;
                if (iVar30 + 1 != 0) break;
                iVar30 = 3;
                piVar28 = piVar33 + 3;
                while (bVar1 = iVar30 != iVar31, iVar30 = iVar30 + 1, bVar1) {
                  iVar6 = *piVar28;
                  *piVar28 = iVar6 + 1;
                  piVar28 = piVar28 + 1;
                  if (iVar6 + 1 != 0) goto LAB_00043068;
                }
              }
            }
          }
        }
LAB_00043068:
        iVar30 = local_78 + param_2 * -2;
        if (iVar30 < 1) {
          iVar30 = param_2 + iVar30;
          iVar31 = iVar31 - local_78;
          if (param_2 != 0) {
            iVar6 = param_2 + -1;
            iVar21 = *param_6;
            piVar28 = param_1;
            piVar33 = param_6;
            if (iVar6 != 0) {
              do {
                *piVar28 = iVar21;
                iVar6 = iVar6 + -1;
                iVar21 = piVar33[1];
                piVar28 = piVar28 + 1;
                piVar33 = piVar33 + 1;
              } while (iVar6 != 0);
              piVar28 = param_1 + param_2 + -1;
            }
            *piVar28 = iVar21;
          }
          param_7 = (uint *)(iVar30 * 4);
          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,iVar30);
          puVar25 = (uint *)(param_1 + iVar30);
          uVar26 = *puVar25;
          *puVar25 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            if (iVar31 < 2) goto LAB_00043184;
            uVar27 = puVar25[1];
            puVar25[1] = uVar27 - 1;
            if (uVar27 == 0) {
              if (iVar31 == 2) goto LAB_00043184;
              uVar27 = puVar25[2];
              puVar25[2] = uVar27 - 1;
              if (uVar27 != 0) goto LAB_00043a88;
              iVar30 = 3;
              puVar25 = puVar25 + 3;
              do {
                bVar1 = iVar31 == iVar30;
                iVar30 = iVar30 + 1;
                if (bVar1) goto LAB_00043184;
                uVar27 = *puVar25;
                *puVar25 = uVar27 - 1;
                param_11 = (uint *)0x0;
                puVar25 = puVar25 + 1;
              } while (uVar27 == 0);
              goto LAB_00043210;
            }
          }
LAB_00043a88:
          param_11 = (uint *)0x0;
        }
        else {
          uVar27 = (*(code *)PTR___gmpn_add_n_0009d334)
                             (param_1,param_6,param_6 + param_2 * 2,iVar30);
          puVar17 = (uint *)(param_6 + iVar30);
          puVar25 = (uint *)(param_1 + iVar30);
          iVar30 = param_2 - iVar30;
          uVar26 = *puVar17;
          *puVar25 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            if (iVar30 < 2) {
LAB_00043b4c:
              param_11 = (uint *)0x1;
            }
            else {
              uVar27 = puVar17[1];
              puVar25[1] = uVar27 + 1;
              if (uVar27 + 1 == 0) {
                if (iVar30 == 2) goto LAB_00043b4c;
                uVar27 = puVar17[2];
                puVar25[2] = uVar27 + 1;
                if (uVar27 + 1 == 0) {
                  puVar18 = puVar17 + 3;
                  iVar6 = 3;
                  puVar5 = puVar25 + 3;
                  do {
                    if (iVar30 == iVar6) goto LAB_00043b4c;
                    uVar27 = *puVar18;
                    iVar6 = iVar6 + 1;
                    puVar18 = puVar18 + 1;
                    *puVar5 = uVar27 + 1;
                    puVar5 = puVar5 + 1;
                  } while (uVar27 + 1 == 0);
                }
                else {
                  iVar6 = 3;
                }
              }
              else {
                iVar6 = 2;
              }
              if ((puVar25 == puVar17) || (iVar30 <= iVar6)) goto LAB_00044504;
              puVar5 = puVar17 + iVar6;
              puVar25 = puVar25 + iVar6;
              do {
                uVar27 = *puVar5;
                puVar5 = puVar5 + 1;
                *puVar25 = uVar27;
                puVar25 = puVar25 + 1;
              } while (puVar17 + iVar30 != puVar5);
              param_11 = (uint *)0x0;
            }
          }
          else {
            if ((puVar25 != puVar17) && (puVar5 = puVar17 + 1, 1 < iVar30)) {
              do {
                puVar25 = puVar25 + 1;
                uVar27 = *puVar5;
                puVar5 = puVar5 + 1;
                *puVar25 = uVar27;
              } while (puVar5 != puVar17 + iVar30);
            }
LAB_00044504:
            param_11 = (uint *)0x0;
          }
          param_7 = (uint *)(param_1 + param_2);
          uVar27 = (*(code *)PTR___gmpn_sub_n_0009d514)(param_1,param_1,param_6 + param_2,param_2);
          uVar26 = *param_7;
          *param_7 = uVar26 - uVar27;
          if ((uVar26 < uVar27) &&
             (param_11 = (uint *)((int)param_11 + -1), param_11 == (uint *)0xffffffff)) {
LAB_00043184:
            iVar30 = *param_1;
            *param_1 = iVar30 + 1;
            if (iVar30 + 1 == 0) {
              if (param_2 < 2) {
LAB_00043204:
                param_11 = (uint *)0x1;
                goto LAB_00043210;
              }
              iVar30 = param_1[1];
              param_1[1] = iVar30 + 1;
              if (iVar30 + 1 == 0) {
                if (param_2 == 2) goto LAB_00043204;
                iVar30 = param_1[2];
                param_1[2] = iVar30 + 1;
                if (iVar30 + 1 == 0) {
                  iVar30 = 3;
                  piVar33 = param_1 + 3;
                  do {
                    bVar1 = param_2 == iVar30;
                    iVar30 = iVar30 + 1;
                    if (bVar1) goto LAB_00043204;
                    iVar6 = *piVar33;
                    *piVar33 = iVar6 + 1;
                    piVar33 = piVar33 + 1;
                  } while (iVar6 + 1 == 0);
                }
              }
            }
            goto LAB_00043a88;
          }
        }
LAB_00043210:
        if (local_2c == *(int *)puVar4) {
          return param_11;
        }
        (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_00045c00:
        iVar30 = 0x230;
        local_6c = (code *)0x1;
        param_4 = local_84;
        goto LAB_000427f4;
      }
      uVar27 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(param_7,local_6c);
      iVar6 = 1 << (uVar27 & 0x1f);
      piVar33 = (int *)(iVar6 - 1U & (uint)param_7);
      if (piVar33 == (int *)0x0) {
        iVar31 = iVar6;
        if (iVar6 < 0x20) {
          iVar31 = 0x20;
        }
        iVar21 = (int)param_7 >> (uVar27 & 0x1f);
        if (iVar31 == 0) {
          trap(7);
        }
        iVar31 = ((int)((((int)param_7 << 5) >> (uVar27 & 0x1f)) * 2 + uVar27 + 2 + iVar31) / iVar31
                 ) * iVar31;
        iVar32 = iVar31;
        if (iVar31 < 0) {
          iVar32 = iVar31 + 0x1f;
        }
        uVar26 = iVar32 >> 5;
        if (iVar30 <= (int)uVar26) {
          while( true ) {
            uVar7 = (*(code *)PTR___gmpn_fft_best_k_0009d320)(uVar26,local_6c);
            iVar30 = 1 << (uVar7 & 0x1f);
            if ((iVar30 - 1U & uVar26) == 0) break;
            uVar26 = -iVar30 & (uVar26 + iVar30) - 1;
            iVar31 = uVar26 << 5;
          }
        }
        if ((int)param_7 <= (int)uVar26) goto LAB_00045524;
        iVar30 = 4 << (uVar27 & 0x1f);
        uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);
        iVar32 = uVar26 + 1;
        uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar30);
        iVar30 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                           (&local_30,(iVar32 * 2 << (uVar27 & 0x1f)) << 2);
        uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,iVar32 * 8);
        iVar32 = iVar30 + (iVar32 << (uVar27 & 0x1f)) * 4;
        local_68 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)
                                    (&local_30,(uVar27 + 1) * 4);
        iVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_30,8 << (uVar27 & 0x1f));
        iVar31 = iVar31 >> (uVar27 & 0x1f);
        if ((int)uVar27 < 0) {
          *(undefined4 *)*local_68 = 0;
        }
        else {
          uVar7 = 0;
          piVar33 = local_68;
          do {
            uVar2 = uVar7 & 0x1f;
            *piVar33 = iVar11;
            uVar7 = uVar7 + 1;
            iVar11 = iVar11 + (4 << uVar2);
            piVar33 = piVar33 + 1;
          } while (uVar27 + 1 != uVar7);
          *(undefined4 *)*local_68 = 0;
          if (0 < (int)uVar27) {
            iVar11 = 1;
            piVar33 = local_68;
            do {
              piVar24 = (int *)*piVar33;
              piVar29 = piVar24 + iVar11;
              piVar28 = (int *)(piVar33[1] + iVar11 * 4);
              do {
                iVar12 = *piVar24;
                piVar24 = piVar24 + 1;
                piVar28[-iVar11] = iVar12 * 2;
                *piVar28 = iVar12 * 2 + 1;
                piVar28 = piVar28 + 1;
              } while (piVar29 != piVar24);
              piVar33 = piVar33 + 1;
              iVar11 = iVar11 << 1;
            } while (local_68 + uVar27 != piVar33);
          }
        }
        iVar11 = (int)param_7 * 4;
        if (0 < iVar23) {
          iVar13 = (iVar21 << (uVar27 & 0x1f)) + 1;
          pcVar14 = (code *)(PTR_LAB_0009d078 + 0x2170);
          pcVar15 = (code *)(PTR_LAB_0009d078 + 0xd98);
          iVar12 = 0;
          do {
            puVar25 = local_84 + iVar12;
            piVar28 = (int *)*puVar25;
            piVar24 = piVar28 + (int)param_7;
            piVar33 = piVar28;
            if (*piVar24 != 0) {
              do {
                iVar22 = *piVar33;
                *piVar33 = iVar22 + -1;
                piVar33 = piVar33 + 1;
              } while (iVar22 == 0);
              if (*piVar24 == 0) {
                piVar28 = (int *)(*(code *)PTR_memset_0009d2e8)(piVar28,0,iVar11);
                *piVar24 = 1;
              }
              else {
                *piVar24 = 0;
              }
            }
            if (local_84 == param_4) {
              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);
            }
            else {
              piVar24 = (int *)param_4[iVar12];
              piVar29 = piVar24 + (int)param_7;
              piVar33 = piVar24;
              if (*piVar29 != 0) {
                do {
                  iVar22 = *piVar33;
                  *piVar33 = iVar22 + -1;
                  piVar33 = piVar33 + 1;
                } while (iVar22 == 0);
                if (*piVar29 == 0) {
                  (*(code *)PTR_memset_0009d2e8)(piVar24,0,iVar11);
                  *piVar29 = 1;
                }
                else {
                  *piVar29 = 0;
                }
              }
              (*pcVar15)(iVar30,uVar8,iVar6,uVar26,piVar28,iVar13,iVar21,iVar31,uVar10);
              (*pcVar15)(iVar32,uVar9,iVar6,uVar26,param_4[iVar12],iVar13,iVar21,iVar31,uVar10);
            }
            iVar12 = iVar12 + 1;
            uVar16 = (*pcVar14)(*puVar25,param_7,uVar27,uVar8,uVar9,iVar32,uVar26,iVar21,iVar31,
                                local_68,uVar10,local_6c);
            *(undefined4 *)(*puVar25 + iVar11) = uVar16;
          } while (iVar23 != iVar12);
        }
        goto LAB_00042c64;
      }
      (*(code *)PTR___gmp_assert_fail_0009d420)
                (PTR_LAB_0009d06c + 0x4d14,0x1c1,PTR_LAB_0009d06c + 0x4d20);
LAB_00045524:
      (*(code *)PTR___gmp_assert_fail_0009d420)
                (PTR_LAB_0009d06c + 0x4d14,0x1d7,PTR_LAB_0009d06c + 0x4d34);
LAB_0004555c:
      iVar30 = param_9 << 3;
      pcVar14 = (code *)(PTR_LAB_0009d078 + 0x1610);
      piVar28 = local_68 + -2;
      piVar24 = (int *)local_68[-1];
      FUN_00041610(param_5,iVar20,piVar28,iVar30,param_7,4,param_11);
      puVar25 = param_5 + 1;
      (*pcVar14)(param_5 + 2,iVar20,piVar28,iVar30,param_7,4,param_11);
      if (iVar20 < 1) {
        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);
        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);
      }
      else {
        piVar29 = piVar24 + iVar20 * 2;
        puVar5 = param_11 + (int)param_7;
        pcVar15 = (code *)(PTR_LAB_0009d078 + 0x790);
        puVar17 = param_5;
        do {
          (*pcVar15)(param_11,puVar17[2],local_78 * *piVar24,param_7);
          puVar18 = (uint *)puVar17[2];
          uVar27 = *puVar5;
          iVar21 = *(int *)(*puVar17 + (int)param_7 * 4);
          iVar6 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar18,*puVar17,param_11,param_7);
          iVar31 = iVar21 - (uVar27 + iVar6);
          uVar27 = iVar31 >> 0x1f & (uVar27 + iVar6) - iVar21;
          puVar18[(int)param_7] = iVar31 + uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1] + 1;
              puVar18[1] = uVar27;
              if (uVar27 != 0) goto LAB_00045614;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar18 = (uint *)*puVar17;
          }
          else {
LAB_00045614:
            puVar18 = (uint *)*puVar17;
          }
          uVar26 = *puVar5;
          uVar27 = puVar18[(int)param_7];
          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar18,puVar18,param_11,param_7);
          iVar6 = uVar27 + uVar26 + iVar6;
          uVar27 = iVar6 - 1;
          if (iVar6 == 0) {
            uVar27 = 0;
          }
          puVar18[(int)param_7] = iVar6 - uVar27;
          uVar26 = *puVar18;
          *puVar18 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar18[1];
              puVar18[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar18 = puVar18 + 2;
              uVar27 = *puVar18;
              *puVar18 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar17 = puVar17 + 4;
        } while (piVar24 != piVar29);
        piVar24 = (int *)local_68[-1];
        (*pcVar14)(puVar25,iVar20,piVar28,iVar30,param_7,4,param_11);
        (*pcVar14)(param_5 + 3,iVar20,piVar28,iVar30,param_7,4,param_11);
        piVar28 = piVar24 + iVar20 * 2;
        do {
          (*pcVar15)(param_11,puVar25[2],local_78 * *piVar24,param_7);
          puVar17 = (uint *)puVar25[2];
          uVar27 = *puVar5;
          iVar31 = *(int *)(*puVar25 + (int)param_7 * 4);
          iVar30 = (*(code *)PTR___gmpn_sub_n_0009d514)(puVar17,*puVar25,param_11,param_7);
          iVar6 = iVar31 - (uVar27 + iVar30);
          uVar27 = iVar6 >> 0x1f & (uVar27 + iVar30) - iVar31;
          puVar17[(int)param_7] = iVar6 + uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar27 + uVar26;
          if (uVar27 + uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1] + 1;
              puVar17[1] = uVar27;
              if (uVar27 != 0) goto LAB_000457d8;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 + 1;
            } while (uVar27 + 1 == 0);
            puVar17 = (uint *)*puVar25;
          }
          else {
LAB_000457d8:
            puVar17 = (uint *)*puVar25;
          }
          uVar26 = *puVar5;
          uVar27 = puVar17[(int)param_7];
          iVar30 = (*(code *)PTR___gmpn_add_n_0009d334)(puVar17,puVar17,param_11,param_7);
          iVar30 = uVar27 + uVar26 + iVar30;
          uVar27 = iVar30 - 1;
          if (iVar30 == 0) {
            uVar27 = 0;
          }
          puVar17[(int)param_7] = iVar30 - uVar27;
          uVar26 = *puVar17;
          *puVar17 = uVar26 - uVar27;
          if (uVar26 < uVar27) {
            do {
              uVar27 = puVar17[1];
              puVar17[1] = uVar27 - 1;
              if (uVar27 != 0) break;
              puVar17 = puVar17 + 2;
              uVar27 = *puVar17;
              *puVar17 = uVar27 - 1;
            } while (uVar27 == 0);
          }
          piVar24 = piVar24 + 2;
          puVar25 = puVar25 + 4;
        } while (piVar24 != piVar28);
      }
    } while (local_7c < 1);
    iVar30 = (int)param_7 * 4;
    puVar17 = param_11 + (int)param_7;
    local_90 = (code *)(PTR_LAB_0009d078 + 0x790);
  } while( true );
}

